建立应用程序PPT课件_第1页
建立应用程序PPT课件_第2页
建立应用程序PPT课件_第3页
建立应用程序PPT课件_第4页
建立应用程序PPT课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、第7章 建立应用程序,作者:李学志,AotuCAD既可以将直接加载的AutoLISP源代码解释执行,也可以通过编译器先将AutoLISP源代码编译为可执行程序,然后加载执行。前者的优点是可随时测试或修改源代码,可以利用所有的调试程序的工具。后者的优点是提高了执行速度、对源代码保密。 如果确认已加载过的AutoLISP源代码运行正常,则应将该源代码编译为可执行的机器代码文件。该文件的扩展名为.fas,是只有机器才能认识的目标文件。这样,不仅提高了程序的加载和运行速度,也起到了保护源代码的作用。Visual LISP还可生成更复杂的扩展名为.vlx的可执行文件。该文件是包括已编译的AutoLISP

2、代码和dcl、vba等资源文件,是一个打包的应用程序。 Visual LISP可以用vlisp-compile函数编译单个的AutoLISP文件,也可以用生成应用程序向导,将多个AutoLISP文件编译成单个的.fas 和.vlx文件。,7.1 通过Visual LISP_compile 函数编译单个文件 该函数的调用格式为: (vlisp-compile mode filename out-filename) 其中:mode为编译的模式、filename为源文件的名字、out-filename为编译后输出的.fas类型的执行文件的名字。 1.选择编译模式 mode 参数指定编译模式,它可以是

3、以下三种编译模式之一: (1)st 标准编译模式 标准编译模式可以生成最小的执行文件,它适合于只包括单个文件的程序。 (2)lsm 优化并间接链接 (3)lsa 优化并直接链接 优化选项可使生成的的编译文件效率更高,它适合于较大而且复杂的程序。优化的基本功能如下:, 对已编译函数直接引用,而不是引用函数名。该功能可提高代码的运行速度并防止在运行时对函数的重定义。 去掉函数名使得已编译代码更安全、减少程序的长度和缩短程序的加载时间。 去掉所有局部变量名并对其直接链接引用,同样使得已编译代码更安全、并减小程序的大小和加载程序所用的时间。 2. 确定要编译的LSP源文件 如果源文件在AutoCAD支

4、持的搜索路径下,可以不包括路径名。选择AutoCAD菜单ToolsOptions,然后打开Files选项卡并选取Support File Search Path,可设置文件搜索路径。 例如,已设置文件搜索路径为d:user,就可以用表达式(vlisp-compile st sample.lsp)编译驱动器D的user1目录下的文件sample.lsp。 如果d:user不是文件搜索路径,那么,在指定源文件时必须包括完整的路径名,如: (vlisp-compile st d:userexample.lsp)或(vlisp-compile st d:/user/ example.lsp),Visu

5、al LISP默认源文件的扩展名为.lsp。 3. 确定编译器生成的输出文件名 如果未指定输出文件名,编译器生成的文件和源文件同名同路径,扩展名为.fas。 例如,(vlisp-compile st d:/user/example.lsp)编译生成的文件在d:/user/路径下,文件名为example.fas。 如果指定了输出文件名但没有指定输出文件的路径,Visual LISP将把输出文件放在AutoCAD的安装目录下。例如,假定安装目录为d:autocad2006,用表达式(vlisp-compile st sample.lsp sample.fas)编译生成的sample.fas,在d:

6、autocad2006 路径下。 通常,应该指定输出文件的完整路径,可以省略输出文件的扩展名。例如: (vlisp-compile st d:/user1/example1 d:/user2/example2)这样可以保证将输出文件放到指定的目录下。,4.举例 假定AutoLISP源文件的名字是example1.lsp,存放在驱动器d的user1目录下,文件的内容是定义绘制螺钉的命令,命令的名字是screw。编译后的执行文件名字是example2存放在驱动器d的user2目录下。 (1)在AutoCAD的Command:或控制台_$ 提示下,调用vlisp-compile函数 (vlisp-c

7、ompile st d:/user1/example1 d:/user2/example2) 以标准模式编译驱动器d的user1目录下的LSP文件example1.lsp,在驱动器d的user2目录下得到可执行文件example2.fas。 (2)了解编译输出( Build Output )窗口 如果源程序没有错误,将在图7-1所示为编译输出窗口显示编译过程各阶段的有关信息。首先是源代码的语法和词汇检查,然后进行编译,并显示源文件中所定义的函数名或AutoCAD命令名,最后报告所生成的执行文件的名字和路径。,如果编译器检查到错误,将在编译输出窗口显示出错信息并停止编译。如果编译器遇到重定义现有

8、的AutoLISP函数或为受保护的符号赋值,将会发出警告消息。当编译器显示警告和出错信息时,双击该类信息,将自动切换到文本编辑窗口,并亮显含有该类出错信息的源程序代码。,图7-1编译输出窗口,5.加载和运行已编译程序 无论是.fas文件,还是可以包含多个已编译程序的.vlx打包文件,都可以在Visual LISP控制台窗口、AutoCAD命令提示处加载这些已编译的 AutoLISP 程序,也可以在AutoCAD菜单上选取ToolsLoad Application、ToolsAutoLISPLoad或Visual LISP菜单上选取FileLoad File加载这些已编译的AutoLISP程序。

9、 (1)在Visual LISP控制台窗口加载已编译的LSP程序 (load d:/user2/example.fas) 如果不指定文件扩展名,load 函数首先查找并加载扩展名为.vlx 的文件;如果没有找到.vlx文件,load 函数将查找并加载.fas文件;如果没有找到.fas文件,load函数将查找并加载.lsp 文件。,也可以选择Visual LISP菜单FileLoad File,通过随后弹出的Load lisp file对话框来选择要加载的文件。 (2)在Visual LISP控制台提示下,输入用括号括起的函数名,即可运行该函数。运行用LISP定义的AutoCAD命令,不能省略命

10、令名前面的C:而且必须用括号括起。 在AutoCAD窗口调用函数时,输入的函数名和参数用括号括起,调用LISP定义的AutoCAD命令时,直接键入自定义的AutoCAD命令名。 (3)加载 AutoLISP 扩展函数 Visual LISP对AutoLISP语言进行了扩展,这些扩展函数的名称以 vla-、vlax-和vlr-开头。启动AutoCAD时它们不会被自动加载。在使用这些函数之前,必须调用vl-load-com函数加载这些AutoLISP扩展函数。其格式如下: (vl-load-com),7.2用应用程序生成器创建应用程序 应用程序生成器以向导的方式将AutoLISP源代码、已编译的A

11、utoLISP程序、对话框定义文件等资源文件生成独立的可执行文件,该文件的扩展名为.vlx,称为VLX文件。 应用程序生成器在创建VLX文件的同时,还生成了展名为.fas的已编译的AutoLISP文件,扩展名为.prv的程序生成文件。后者包括Visual LISP创建应用程序所需的所有指令。 用应用程序生成器创建应用程序之前,应该对源程序进行完整的调试或试运行,以免在生成过程中出现的编译错误导致其不能完成创建工作。 假定gear.lsp是以对话框为输入界面的绘制齿轮的LISP源程序,gear.dcl是定义输入齿轮参数的对话框文件,它们存放在驱动器d的user1目录下, 创建的应用程序名字为ch

12、ilun ,存放在驱动器D的user2目录下。用应用程序生成器创建可执行的程序步骤如下:,(1) 调用应用程序生成向导 从Visual LISP菜单上选择FileMake AplicationNew Aplication Wizard,启动向导。Visual LISP将显示图7-2所示向导模式对话框。,图7-2向导模式对话框,(2) 确定向导模式 应用程序生成向导有Simple(简单)和Expert(专家)两种模式。在简单模式下,只需指出LISP源文件、LISP编译文件或Visual LISP工程文件和要创建的文件名;在专家模式下,可以设置许多其他的选项。如果是单一LISP程序,应该选Simp

13、le模式,本例因为还要包含有对话框文件,因此选择Expert模式。单击Next按钮。将弹出图7-3所示应用程序路径对话框。,图7-3应用程序路径对话框,(3) 确定待建程序的位置和名称 在图7-3所示应用程序路径对话框的Application Location编辑框填写应用程序所处的位置(目录)。可以通过Browse(浏览)按钮在目录树上指定应用程序所处的位置,也可以在文本框中输入完整的路径名。例如:d:/user2。 在Application Name编辑框填写要创建的应用程序名。例如:chilun,这样将在d:/user2/目录下创建应用程序文件chilun.vlx和程序生成文件chilu

14、n.prv。,图7-4应用选项对话框,在简单模式和专家模式下都会出现图7-3所示应用程序路径对话框。 单击Next按钮。弹出图7-4所示应用选项对话框。 本例不打开Separate Namespace切换开关,单击Next按钮将弹出图7-5所示的包含LISP文件对话框。,(5)确定LISP文件的类型 LISP文件可以是AutoLISP源代码文件、编译AutoLISP文件(FAS)或Visual LISP工程文件三种类型。通过图7-5所示的包含LISP文件对话框的下拉菜单确定LISP文件类型。,图7-5包含LISP文件对话框,例如选择了Lisp source files类型,并且单击Add按钮,

15、将弹出图7-6所示添加lisp源文件对话框。,(6)添加lisp源文件 可以使用标准的Windows文件选取方法来选取多个文件。在图7-6所示对话框上选取gear.lsp文件之后,单击打开按钮可以将该文件添加到应用程序中,见图7-7所示包含Lisp文件的对话框。如果想继续添加其他类型的文件,先从下拉列表处选择文件类型后再单击Add按钮。,图7-6添加lisp源文件对话框,如果指定的是AutoLISP源文件,Visual LISP在打包成VLX文件前先编译成FAS类型的文件;如果指定的是FAS类型的文件,则直接将其打包;如果指定的是PRJ类型的工程文件,则工程文件中的所有文件将根据其具体类型先编

16、译再打包或直接打包成VLX文件。,如果要从应用程序中删除文件,只需选取这些文件后单击Remove按钮即可,也可以在选取一个或多个文件后,单击鼠标右键并从快捷菜单中选择Remove项。,图7-7包含Lisp文件的对话框,应用程序文件的加载顺序和它们在LISP Files to Include对话框中列出的顺序相同。如果在加载时调用某函数,则必须在调用该函数前定义它。在这种情况下,应该把定义该函数的文件放在调用该函数的文件之前。选取待调整的文件名,然后点取下列按钮即可。 Top: 移到列表顶端。 Up:移到上一文件之前。 Down:移到下一文件之后。 Bottom:移到列表底端。 也可以先选取待调

17、整的文件名,然后单击鼠标右键,从随后弹出的快捷菜单上选取相应选项。如果是工程文件,因其内的源文件顺序已在工程文件内定义,只能通过修改工程文件以改变源文件的顺序。,由于将应用程序生成向导确定为专家模式,因此,单击Next按钮,将弹出图7-8所示的包含资源文件对话框。,图7-8 包含资源文件对话框,(7)添加资源文件 通过添加资源文件对话框。可以用添加源文件的类似操作添加(移去)对话框控制DCL文件、DVB 文件、文本文件等资源文件。如果添加的是LISP工程文件,在该工程文件中的所有文件都将被编译并包含到VLX文件。,图7-9添加DCL文件对话框,点取图7-8所示对话框的下拉列表,选取DCL fi

18、les,点取Add按钮,将弹出图7-9所示的添加DCL文件对话框。选取gear.dcl文件,点取打开按钮,该DCL文件将被加入到应用程序中,见图710。,图7-10包含资源文件对话框,单击Next按钮,将弹出图7-11所示的确定编译选项对话框。,(8)确定编译选项 仅在专家模式下才出现图7-11所示确定编译选项如果选择了Standard,此为标准模式,将生成最小的输出文件,它适合于只包括单个文件的程序;如果选择了Optimize and Link,此为优化和链接模式,可使生成的的编译文件效率更高,它适合于较大和较复杂的程序。,图7-11 确定编译选项对话框,本例选择两种模式均可,确定编译选项后

19、,单击Next按钮将弹出图7-12所示的查看选项/编译应用程序对话框。,(9) 创建应用程序 这是应用程序生成向导的最后一步,单击Back按钮,返回到上一步,查看上一步的选择;单击Finish按钮,创建应用程序结束。,图7-12查看选项/编译应用程序对话框,运行应用程序生成向导结束。在d:user2路径下,生成了chilun.prv、chilun.vlx和gear.fas文件。其中chilun.prv是包括Visual LISP创建应用程序所需的程序生成文件,gear.vlx是打包的可执行文件,gear.fas是编译gear.lsp时生成的目标文件。加载gear.vlx或gear.fas,在C

20、ommand:提示下键入GEAR即可调用该应用程序绘制齿轮。 如果只有AutoLISP文件(源文件或目标文件),在创建应用程序时,第(2)步应选择Simple(简单)作为向导的模式,这样可以省略第(4)、(7)和(8)步。,7.3 利用工程管理器管理和维护LISP文件 AutoLISP应用程序通常都是由多个独立的LISP文件组成的。随着应用程序中文件数量的增加,对这些文件的管理和维护就变得很困难。在这种情况下,应该使用Visual LISP提供的最有效的工具工程管理器。 7.3.1 工程管理器的功能 工程管理器通过命名的工程对工程所包含的LISP文件进行管理和维护。一个工程在本质上就是一个LI

21、SP源文件表和一套如何编译这些文件的规则。 工程管理器具有以下的功能。 检查应用程序中哪些LISP源文件尚未被编译或者在上一次编译后又被修改过,并自动编译这样的一些文件。 通过一个命名的工程的列表,可以很简单地查找并打开相关的文件。 可以在一个工程的所有的文件中查找指定的源程序代码。 可以通过直接链接多个源文件中的相同描述来优化编译结果。,.,25,下面通过一个实例介绍利用工程管理器管理和维护多个LISP文件的有关操作。 【例7-1】定义以递规方式绘制旋转正六边形的命令。正六边形的旋转中心pc、最大边长lmax、最小边长lmin和旋转角alf是交互输入的参数。正六边形在旋转过程中,除了最外层的

22、正六边形之外,每一个正六边形的顶点都在前一个正六边形的边上,当正六边形的边长缩短到近似最小边长lmin时,绘制结束,见图7-13(a)。从图7-13(b)可以看出每个正六边形与旋转后的下一个正六边形的边长之间具有以下的关系:,.,26,(a) (b) 图7-13以递归方式绘的制旋转正六边形,为了演示多文件的操作,将该程序分别存放于两个文件。文件file1.lsp存放该程序的主函数部分。主函数定义了名字为r-hexagon的AutoCAD命令。文件file2.lsp定义了名字为hexagon的函数。函数hexagon被主函数调用。它们都存放在d盘的user1目录下。,.,27,文件file1.l

23、sp的源代码如下: (defun c:r-hexagon( / pc lmax lmin alf ) (setvar cmdecho 0) ;关闭普通命令提示信息 (setvar blipmode 0) ;关闭光标痕迹 (setvar osmode 0) ;关闭对象捕捉状态 (setq pc(getpoint n输入正六边形的旋转中心:) (setq lmax(getdist pc n输入正六边形的最大边长:) (setq lmin(getdist pc n输入正六边形的最小边长:) (setq alf(getangle pc n输入正六边形的旋转角:) (hexagon pc lmax lm

24、in 0.0) ;调用递归方式绘制旋转正六边形的函数 (princ) ;静默退出 ),.,28,文件file2.lsp的源代码如下: (defun hexagon (pc l lmin phi ) ;变元phi是正六边形的初始角度 (command pline (polar pc phi l) (polar pc (+ phi (/ pi 3.0 ) l) (polar pc (+ phi (/ pi 1.5 ) l) (polar pc (+ phi pi) l) (polar pc (+ phi (/ pi 0.75) l) (polar pc (+ phi (/ pi 0.6 ) l)

25、c ) (if (= l lmin) (progn (setq l(/ l (+ (cos alf) (* (sin alf) 0.5773503);下一个正六边形的边长 (setq phi (+ phi alf) ;下一个正六边形的旋转角度 (hexagon pc l lmin phi) ;绘制下一个正六边形 ) ),.,29,7.3.2 创建一个工程 1. 创建一个工程文件 选择菜单ProjectNew project,将弹出图7-14所示的新工程对话框,此对话框用于确定新工程的路径和文件名。例如输入工程的名字为rh,存放在d盘的user2目录下。,图7-14新工程对话框,.,30,2.

26、向工程添加LISP源文件 单击图7-14新工程对话框的保存按钮,将弹出图7-15所示的工程特性对话框。该对 话框有工程文件和编译选 项两个选项卡。工程文件 选项卡用于向工程添加 LISP源文件。,图7-15工程特性对话框,.,31,图7-15所示为工程文件选项卡。通过按钮 指定LISP源文件的路径,路径下方的列表显示了该路径下所有的LISP文件名。选取该列表的一个或多个文件,单击按钮 ,被选的文件就会转移到右边的列表内。右边的列表显示了该工程当前包含的所有LISP文件名。 如果选取右边列表的一个文件,单击按钮 ,被选的文件就会从当前的工程中移回原处。按钮Top、Up、Down和Bottom用于

27、排列LISP文件在列表框中的顺序,该顺序即为加载这些文件的顺序。 例如,在图7-15所示为工程文件选项卡上单击按钮 ,指定LISP源文件的路径为d盘的user1。路径下方的列表内显示了user1路径下的LISP文件名。选取该列表的文件file1和file2之后,单击按钮 ,文件file1和file2将移至右边的列表作为rh工程的成员。单击确定按钮,将弹出图7-16所示的工程窗口,名字为rh的工程创建完毕,同时在d盘的user2目录下得到了名字为rh.prj的工程文件。,.,32,7.3.3 工程窗口 工程窗口的标题显示了该工程的名字,列表框内显示了该工程包含的所有的LISP源文件的名字,双击列

28、表框内的任意一个文件名(无论文件是否打开)即可激活包含该文件的文本编辑窗口。,图7-16工程窗口,工程窗口的工具栏上有5个按钮,它们分别具有以下的功能。 :弹出图7-15所示的工程特性对话框,通过该对话框修改该工程的特性。,.,33,:加载工程中所有经过编译的.fas文件。如果某些LISP文件尚未被编译,则显示如图7-17所示的是否编译这些文件的询问信息。单击按钮是,则首先编译这些文件,然后将其加载,单击按钮否,则直接加载这些LISP源文件和已经存在的.fas文件。 假定文件file1.lsp和file2.lsp尚未被编译,单击此按钮,在图7-17所示的询问框中单击按钮是,则首先编译这两个文件

29、,然后加载刚生成的file1.fas和file2. fas。这时在AutoCAD的Command:提示下,键入r-hexagon命令即可绘制旋转正六边形。,.,34,:加载工程中所有的LISP源文件。 :编译工程中所有的在上一次编译后被修改过的文件,生成新的.fas文件。 :重新编译工程中所有的LISP,无论这些文件是否已经被编译过。 以上操作也可以通过工程的快捷菜单的相应选项完成。将鼠标移至工程窗口的列表框内,单击鼠标右键,将弹出图7-18所示的快捷菜单,其中各菜单项的功能见下一页。,图7-18工程窗口的快捷菜单,.,35,Edit:编辑选中的文件 Add File:打开工程特性对话框,向工

30、程中添加文件 Remove file:从工程中删除选中的文件 Load:加载所选文件的.fas文件,如果所选文件尚未被编译,则加载其LISP源文件 Load source:加载所选文件的LISP源文件 Check syntax:对所选的文件进行语法检查 Touch:处理所选的文件。经过处理的文件即使是新编译过的,单击图标 时 也要再次重新编译。 Arrange files:根据该菜单项的下一级菜单提供的规则对工程中的成员排序 Multiple Selection:单击该菜单项可以切换否具有多选功能的状态。若设置为多 选,菜单项前加标记 UnSelect all:没有一个文件被选取时,选取所有文

31、件。已经选取了一些文件时 ,放弃选取的那些文件 Close project:关闭当前的工程 Save proct as:将当前的工程另存为其他名字,.,36,7.3.4 在工程中查找源程序代码 单击查找按钮 ,弹出图7-19所示的查找对话框。打开Project互锁按钮,通过Project下拉列表选取一个工程,在Find What列表输入或选择要查找的源程序代码,单击Find按钮,在图7-20所示的查找输出窗口报告了在指定工程的所有文件中查找的结果。,图7-19查找对话框,.,37,例如,通过Project下拉列表选取工程rh,在Find What列表输入hexagon,单击Find按钮,在图7

32、-20所示的查找输出窗口中显示了在文件file2.lsp和file1.lsp中含有源代码hexagon的4个表达式。双击其中任意一个表达式,就会激活该表达式所在的文件,并且亮显所查找的源代码,例如hexagon处于被选状态。,图7-20查找输出窗口,.,38,7.3.5 通过工程创建应用程序 上一节介绍了用应用程序生成器创建应用程序的全过程。在第5步确定LISP文件的类型时,除了选择LISP源文件和编译过的LISP文件之外,还可以选择Visual LISP工程文件。通过指定的工程文件名,该工程所包含的所有文件都被添加到应用程序中。 例如,通过图7-21所示的包含LISP文件对话框的下拉列表选择

33、VisualLISP project,单击Add按钮,通过随后弹出的Add VisualLISP project files对话框选择d盘的user2目录下的rh.prj工程文件,见图7-21。最后单击Next按钮,进行下一步操作。此时d盘的user1目录下的文件file1.lsp和file2.lsp被添加到当前的应用程序。,.,39,图7-21选择了VisualLISP project选项的包含LISP文件的对话框,.,40,7.3.6 优化应用程序 通过Visual LISP编译选项的优化功能可以得到运行效率更高的编译代码。单击图7-15所示的工程特性对话框的编译选项标签,即可显示图7-22所示的编译选项卡。该选项卡包含以下的一些工程编译选项。,图7-22编译选项卡,.,41,1. Compilation Mode栏 该栏的功能是确定设置编译模式,它有以下两个选项。 lStandar(标准):选择标准模式时,编译器将保留函数和全局变量的符号名,因为这些符号可能被其他程序引用。在引用某一符号时,编译器将在符号表中查找这个符号。该模式比较适合于单个文件的程序。 lOptimize(优化):选择优化模式时,编译器将认为工程中的所有文件将最终生成一个完整的应用程序。因此编译器将不考虑符号名

温馨提示

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

评论

0/150

提交评论