版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章
建立应用程序1.AotuCAD既可以将直接加载的AutoLISP源代码解释执行,也可以通过编译器先将AutoLISP源代码编译为可执行程序,然后加载执行。前者的优点是可随时测试或修改源代码,可以利用所有的调试程序的工具。后者的优点是提高了执行速度、对源代码保密。如果确认已加载过的AutoLISP源代码运行正常,则应将该源代码编译为可执行的机器代码文件。该文件的扩展名为".fas",是只有机器才能认识的目标文件。这样,不仅提高了程序的加载和运行速度,也起到了保护源代码的作用。VisualLISP还可生成更复杂的扩展名为".vlx"的可执行文件。该文件是包括已编译的AutoLISP代码和dcl、vba等资源文件,是一个打包的应用程序。
VisualLISP可以用vlisp-compile函数编译单个的AutoLISP文件,也可以用"生成应用程序向导",将多个AutoLISP文件编译成单个的".fas"和".vlx"文件。2.7.1通过VisualLISP_compile函数编译单个文件该函数的调用格式为:
(vlisp-compile'mode"filename"[out-filename])
其中:mode为编译的模式、filename为源文件的名字、out-filename为编译后输出的".fas"类型的执行文件的名字。1.选择编译模式
mode
参数指定编译模式,它可以是以下三种编译模式之一:(1)st标准编译模式标准编译模式可以生成最小的执行文件,它适合于只包括单个文件的程序。(2)lsm优化并间接链接(3)lsa优化并直接链接优化选项可使生成的的编译文件效率更高,它适合于较大而且复杂的程序。优化的基本功能如下:3.4.5.4.举例假定AutoLISP源文件的名字是example1.lsp,存放在驱动器d的user1目录下,文件的内容是定义绘制螺钉的命令,命令的名字是screw。编译后的执行文件名字是example2存放在驱动器d的user2目录下。(1)在AutoCAD的Command:或控制台_$提示下,调用vlisp-compile函数(vlisp-compile'st"d:/user1/example1""d:/user2/example2")
以标准模式编译驱动器d的user1目录下的LSP文件"example1.lsp",在驱动器d的user2目录下得到可执行文件"example2.fas"。(2)了解编译输出(BuildOutput)窗口如果源程序没有错误,将在图7-1所示为编译输出窗口显示编译过程各阶段的有关信息。首先是源代码的语法和词汇检查,然后进行编译,并显示源文件中所定义的函数名或AutoCAD命令名,最后报告所生成的执行文件的名字和路径。6.
如果编译器检查到错误,将在编译输出窗口显示出错信息并停止编译。如果编译器遇到重定义现有的AutoLISP函数或为受保护的符号赋值,将会发出警告消息。当编译器显示警告和出错信息时,双击该类信息,将自动切换到文本编辑窗口,并亮显含有该类出错信息的源程序代码。图7-1编译输出窗口
7.5.加载和运行已编译程序无论是".fas"文件,还是可以包含多个已编译程序的".vlx"打包文件,都可以在VisualLISP控制台窗口、AutoCAD命令提示处加载这些已编译的AutoLISP程序,也可以在AutoCAD菜单上选取Tools
LoadApplication、Tools
AutoLISP
Load或VisualLISP菜单上选取File
LoadFile加载这些已编译的AutoLISP程序。(1)在VisualLISP控制台窗口加载已编译的LSP程序
(load"d:/user2/example.fas")
如果不指定文件扩展名,load函数首先查找并加载扩展名为".vlx"的文件;如果没有找到".vlx"文件,load函数将查找并加载".fas"文件;如果没有找到".fas"文件,load函数将查找并加载".lsp文件"。8.
也可以选择VisualLISP菜单"File"
"LoadFile…",通过随后弹出的"Loadlispfile"对话框来选择要加载的文件。(2)在VisualLISP控制台提示下,输入用括号括起的函数名,即可运行该函数。运行用LISP定义的AutoCAD命令,不能省略命令名前面的"C:"而且必须用括号括起。在AutoCAD窗口调用函数时,输入的函数名和参数用括号括起,调用LISP定义的AutoCAD命令时,直接键入自定义的AutoCAD命令名。
(3)加载AutoLISP扩展函数
VisualLISP对AutoLISP语言进行了扩展,这些扩展函数的名称以vla-、vlax-和vlr-开头。启动AutoCAD时它们不会被自动加载。在使用这些函数之前,必须调用vl-load-com函数加载这些AutoLISP扩展函数。其格式如下:
(vl-load-com)
9.7.2用应用程序生成器创建应用程序应用程序生成器以向导的方式将AutoLISP源代码、已编译的AutoLISP程序、对话框定义文件等资源文件生成独立的可执行文件,该文件的扩展名为".vlx",称为VLX文件。应用程序生成器在创建VLX文件的同时,还生成了展名为".fas"的已编译的AutoLISP文件,扩展名为".prv"的程序生成文件。后者包括VisualLISP创建应用程序所需的所有指令。用应用程序生成器创建应用程序之前,应该对源程序进行完整的调试或试运行,以免在生成过程中出现的编译错误导致其不能完成创建工作。假定gear.lsp是以对话框为输入界面的绘制齿轮的LISP源程序,gear.dcl是定义输入齿轮参数的对话框文件,它们存放在驱动器d的user1目录下,创建的应用程序名字为"chilun",存放在驱动器D的user2目录下。用应用程序生成器创建可执行的程序步骤如下:10.(1)调用应用程序生成向导从VisualLISP菜单上选择File
MakeAplication
NewAplicationWizard,启动向导。VisualLISP将显示图7-2所示向导模式对话框。图7-2向导模式对话框
11.(2)确定向导模式应用程序生成向导有Simple(简单)和Expert(专家)两种模式。在简单模式下,只需指出LISP源文件、LISP编译文件或VisualLISP工程文件和要创建的文件名;在专家模式下,可以设置许多其他的选项。如果是单一LISP程序,应该选Simple模式,本例因为还要包含有对话框文件,因此选择Expert模式。单击Next按钮。将弹出图7-3所示应用程序路径对话框。图7-3应用程序路径对话框
12.(3)确定待建程序的位置和名称在图7-3所示应用程序路径对话框的ApplicationLocation编辑框填写应用程序所处的位置(目录)。可以通过Browse(浏览)按钮在目录树上指定应用程序所处的位置,也可以在文本框中输入完整的路径名。例如:d:/user2。在ApplicationName编辑框填写要创建的应用程序名。例如:chilun,这样将在d:/user2/目录下创建应用程序文件chilun.vlx和程序生成文件chilun.prv。图7-4应用选项对话框
在简单模式和专家模式下都会出现图7-3所示应用程序路径对话框。单击Next按钮。弹出图7-4所示应用选项对话框。本例不打开SeparateNamespace切换开关,单击Next按钮将弹出图7-5所示的包含LISP文件对话框。13.(5)确定LISP文件的类型
LISP文件可以是AutoLISP源代码文件、编译AutoLISP文件(FAS)或VisualLISP工程文件三种类型。通过图7-5所示的包含LISP文件对话框的下拉菜单确定LISP文件类型。
图7-5包含LISP文件对话框
例如选择了Lispsourcefiles类型,并且单击Add按钮,将弹出图7-6所示添加lisp源文件对话框。14.(6)添加lisp源文件可以使用标准的Windows文件选取方法来选取多个文件。在图7-6所示对话框上选取gear.lsp文件之后,单击打开按钮可以将该文件添加到应用程序中,见图7-7所示包含Lisp文件的对话框。如果想继续添加其他类型的文件,先从下拉列表处选择文件类型后再单击Add按钮。图7-6添加lisp源文件对话框
如果指定的是AutoLISP源文件,VisualLISP在打包成VLX文件前先编译成FAS类型的文件;如果指定的是FAS类型的文件,则直接将其打包;如果指定的是PRJ类型的工程文件,则工程文件中的所有文件将根据其具体类型先编译再打包或直接打包成VLX文件。15.
如果要从应用程序中删除文件,只需选取这些文件后单击Remove按钮即可,也可以在选取一个或多个文件后,单击鼠标右键并从快捷菜单中选择Remove项。图7-7包含Lisp文件的对话框16.
应用程序文件的加载顺序和它们在"LISPFilestoInclude"对话框中列出的顺序相同。如果在加载时调用某函数,则必须在调用该函数前定义它。在这种情况下,应该把定义该函数的文件放在调用该函数的文件之前。选取待调整的文件名,然后点取下列按钮即可。
①Top:移到列表顶端。②Up:移到上一文件之前。③Down:移到下一文件之后。④Bottom:移到列表底端。也可以先选取待调整的文件名,然后单击鼠标右键,从随后弹出的快捷菜单上选取相应选项。如果是工程文件,因其内的源文件顺序已在工程文件内定义,只能通过修改工程文件以改变源文件的顺序。17.
由于将应用程序生成向导确定为专家模式,因此,单击Next按钮,将弹出图7-8所示的包含资源文件对话框。图7-8包含资源文件对话框
18.(7)添加资源文件通过添加资源文件对话框。可以用添加源文件的类似操作添加(移去)对话框控制DCL文件、DVB文件、文本文件等资源文件。如果添加的是LISP工程文件,在该工程文件中的所有文件都将被编译并包含到VLX文件。
图7-9添加DCL文件对话框
19.
点取图7-8所示对话框的下拉列表,选取DCLfiles,点取Add按钮,将弹出图7-9所示的添加DCL文件对话框。选取gear.dcl文件,点取打开按钮,该DCL文件将被加入到应用程序中,见图7-10。
图7-10包含资源文件对话框单击Next按钮,将弹出图7-11所示的确定编译选项对话框。
20.(8)确定编译选项仅在专家模式下才出现图7-11所示确定编译选项如果选择了Standard,此为标准模式,将生成最小的输出文件,它适合于只包括单个文件的程序;如果选择了OptimizeandLink,此为优化和链接模式,可使生成的的编译文件效率更高,它适合于较大和较复杂的程序。图7-11确定编译选项对话框
本例选择两种模式均可,确定编译选项后,单击Next按钮将弹出图7-12所示的查看选项/编译应用程序对话框。
21.(9)创建应用程序这是应用程序生成向导的最后一步,单击Back按钮,返回到上一步,查看上一步的选择;单击Finish按钮,创建应用程序结束。图7-12查看选项/编译应用程序对话框
22.
运行应用程序生成向导结束。在d:\user2路径下,生成了chilun.prv、chilun.vlx和gear.fas文件。其中chilun.prv是包括VisualLISP创建应用程序所需的程序生成文件,gear.vlx是打包的可执行文件,gear.fas是编译gear.lsp时生成的目标文件。加载gear.vlx或gear.fas,在"Command:"提示下键入GEAR即可调用该应用程序绘制齿轮。如果只有AutoLISP文件(源文件或目标文件),在创建应用程序时,第(2)步应选择Simple(简单)作为向导的模式,这样可以省略第(4)、(7)和(8)步。23.7.3利用工程管理器管理和维护LISP文件
AutoLISP应用程序通常都是由多个独立的LISP文件组成的。随着应用程序中文件数量的增加,对这些文件的管理和维护就变得很困难。在这种情况下,应该使用VisualLISP提供的最有效的工具——工程管理器。7.3.1工程管理器的功能工程管理器通过命名的工程对工程所包含的LISP文件进行管理和维护。一个工程在本质上就是一个LISP源文件表和一套如何编译这些文件的规则。工程管理器具有以下的功能。●检查应用程序中哪些LISP源文件尚未被编译或者在上一次编译后又被修改过,并自动编译这样的一些文件。
●通过一个命名的工程的列表,可以很简单地查找并打开相关的文件。
●可以在一个工程的所有的文件中查找指定的源程序代码。
●可以通过直接链接多个源文件中的相同描述来优化编译结果。
24.
下面通过一个实例介绍利用工程管理器管理和维护多个LISP文件的有关操作。【例7-1】定义以递规方式绘制旋转正六边形的命令。正六边形的旋转中心pc、最大边长lmax、最小边长lmin和旋转角alf是交互输入的参数。正六边形在旋转过程中,除了最外层的正六边形之外,每一个正六边形的顶点都在前一个正六边形的边上,当正六边形的边长缩短到近似最小边长lmin时,绘制结束,见图7-13(a)。从图7-13(b)可以看出每个正六边形与旋转后的下一个正六边形的边长之间具有以下的关系:
25.(a)(b)图7-13以递归方式绘的制旋转正六边形
为了演示多文件的操作,将该程序分别存放于两个文件。文件file1.lsp存放该程序的主函数部分。主函数定义了名字为r-hexagon的AutoCAD命令。文件file2.lsp定义了名字为hexagon的函数。函数hexagon被主函数调用。它们都存放在d盘的user1目录下。
26.文件file1.lsp的源代码如下:(defunc:r-hexagon(/pclmaxlminalf)(setvar"cmdecho"0);关闭普通命令提示信息
(setvar"blipmode"0);关闭光标痕迹
(setvar"osmode"0);关闭对象捕捉状态
(setqpc(getpoint"\n输入正六边形的旋转中心:"))(setqlmax(getdistpc"\n输入正六边形的最大边长:"))(setqlmin(getdistpc"\n输入正六边形的最小边长:"))(setqalf(getanglepc"\n输入正六边形的旋转角:"))
(hexagonpclmaxlmin0.0)
;调用递归方式绘制旋转正六边形的函数
(princ);静默退出)27.文件file2.lsp的源代码如下:(defunhexagon(pcllminphi)
;变元phi是正六边形的初始角度
(command"pline"(polarpcphil)(polarpc(+phi(/pi3.0))l)(polarpc(+phi(/pi1.5))l)(polarpc(+phipi)l)(polarpc(+phi(/pi0.75))l)(polarpc(+phi(/pi0.6))l)"c")(if(>=llmin)(progn(setql(/l(+(cosalf)(*(sinalf)0.5773503))));下一个正六边形的边长
(setqphi(+phialf));下一个正六边形的旋转角度
(hexagonpcllminphi)
;绘制下一个正六边形
)))28.7.3.2创建一个工程1.创建一个工程文件选择菜单Project
Newproject,将弹出图7-14所示的新工程对话框,此对话框用于确定新工程的路径和文件名。例如输入工程的名字为rh,存放在d盘的user2目录下。
图7-14新工程对话框
29.2.向工程添加LISP源文件
单击图7-14新工程对话框的保存按钮,将弹出图7-15所示的工程特性对话框。该对话框有工程文件和编译选项两个选项卡。工程文件选项卡用于向工程添加LISP源文件。
图7-15工程特性对话框
30.
图7-15所示为工程文件选项卡。通过按钮指定LISP源文件的路径,路径下方的列表显示了该路径下所有的LISP文件名。选取该列表的一个或多个文件,单击按钮,被选的文件就会转移到右边的列表内。右边的列表显示了该工程当前包含的所有LISP文件名。如果选取右边列表的一个文件,单击按钮,被选的文件就会从当前的工程中移回原处。按钮Top、Up、Down和Bottom用于排列LISP文件在列表框中的顺序,该顺序即为加载这些文件的顺序。例如,在图7-15所示为工程文件选项卡上单击按钮,指定LISP源文件的路径为d盘的user1。路径下方的列表内显示了user1路径下的LISP文件名。选取该列表的文件file1和file2之后,单击按钮,文件file1和file2将移至右边的列表作为rh工程的成员。单击确定按钮,将弹出图7-16所示的工程窗口,名字为rh的工程创建完毕,同时在d盘的user2目录下得到了名字为rh.prj的工程文件。31.7.3.3工程窗口工程窗口的标题显示了该工程的名字,列表框内显示了该工程包含的所有的LISP源文件的名字,双击列表框内的任意一个文件名(无论文件是否打开)即可激活包含该文件的文本编辑窗口。
图7-16工程窗口
工程窗口的工具栏上有5个按钮,它们分别具有以下的功能。:弹出图7-15所示的工程特性对话框,通过该对话框修改该工程的特性。32.
:加载工程中所有经过编译的.fas文件。如果某些LISP文件尚未被编译,则显示如图7-17所示的是否编译这些文件的询问信息。单击按钮"是",则首先编译这些文件,然后将其加载,单击按钮"否",则直接加载这些LISP源文件和已经存在的.fas文件。假定文件file1.lsp和file2.lsp尚未被编译,单击此按钮,在图7-17所示的询问框中单击按钮"是",则首先编译这两个文件,然后加载刚生成的file1.fas和file2.fas。这时在AutoCAD的"Command:"提示下,键入r-hexagon命令即可绘制旋转正六边形。33.
:加载工程中所有的LISP源文件。:编译工程中所有的在上一次编译后被修改过的文件,生成新的.fas文件。:重新编译工程中所有的LISP,无论这些文件是否已经被编译过。以上操作也可以通过工程的快捷菜单的相应选项完成。将鼠标移至工程窗口的列表框内,单击鼠标右键,将弹出图7-18所示的快捷菜单,其中各菜单项的功能见下一页。图7-18工程窗口的快捷菜单
34.Edit:编辑选中的文件AddFile:打开工程特性对话框,向工程中添加文件Removefile:从工程中删除选中的文件Load:加载所选文件的.fas文件,如果所选文件尚未被编译,则加载其LISP源文件Loadsource:加载所选文件的LISP源文件Checksyntax:对所选的文件进行语法检查Touch:"处理"所选的文件。经过"处理"的文件即使是新编译过的,单击图标时也要再次重新编译。Arrangefiles:根据该菜单项的下一级菜单提供的规则对工程中的成员排序MultipleSelection:单击该菜单项可以切换否具有多选功能的状态。若设置为多选,菜单项前加标记"
"[Un]Selectall:没有一个文件被选取时,选取所有文件。已经选取了一些文件时,放弃选取的那些文件Closeproject:关闭当前的工程Saveproctas:将当前的工程另存为其他名字35.7.3.4在工程中查找源程序代码单击查找按钮,弹出图7-19所示的查找对话框。打开Project互锁按钮,通过Project下拉列表选取一个工程,在FindWhat列表输入或选择要查找的源程序代码,单击Find按钮,在图7-20所示的查找输出窗口报告了在指定工程的所有文件中查找的结果。
图7-19查找对话框
36.
例如,通过Project下拉列表选取工程rh,在FindWhat列表输入hexagon,单击Find按钮,在图7-20所示的查找输出窗口中显示了在文件file2.lsp和file1.lsp中含有源代码hexagon的4个表达式。双击其中任意一个表达式,就会激活该表达式所在的文件,并且亮显所查找的源代码,例如hexagon处于被选状态。
图7-20查找输出窗口
37.7.3.5通过工程创建应用程序上一节介绍了用应用程序生成器创建应用程序的全过程。在第5步确定LISP文件的类型时,除了选择LISP源文件和编译过的LISP文件之外,还可以选择VisualLISP工程文件。通过指定的工程文件名,该工程所包含的所有文件都被添加到应用程序中。例如,通过图7-21所示的包含LISP文件对话框的下拉列表选择VisualLISPproject,单击Add按钮,通过随后弹出的AddVisualLISPprojectfiles对话框选择d盘的user2目录下的rh.prj工程文件,见图7-21。最后单击Next按钮,进行下一步操作。此时d盘的user1目录下的文件file1.lsp和file2.lsp被添加到当前的应用程序。38.图7-21选择了VisualLISPproject选项的包含LISP文件的对话框
39.7.3.6优化应用程序通过VisualLISP编译选项的优化功能可以得到运行效率更高的编译代码。单击图7-15所示的工程特性对话框的编译选项标签,即可显示图7-22所示的编译选项卡。该选项卡包含以下的一些工程编译选项。
图7-22编译选项卡
40.1.CompilationMode栏该栏的功能是确定设置编译模式,它有以下两个选项。l
Standar(标准):选择标准模式时,编译器将保留函数和全局变量的符号名,因为这些符号可能被其他程序引用。在引用某一符号时,编译器将在符号表中查找这个符号。该模式比较适合于单个文件的程序。l
Optimize(优化):选择优化模式时,编译器将认为工程中的所有文件将最终生成一个完整的应用程序。因此编译器将不考虑符号名,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理改进建议函3篇范文
- 企业财务管理规范操作方案
- 工业生产环境质量检测与优化手册
- 跨境电商运营策略与操作技巧手册
- 食品安全管控措施到位承诺函(3篇)
- 都市治理环境保护承诺函(6篇)
- 项目风险评估及防范执行方案
- IT数据备份与恢复指南
- 汽车维修技术基础指导书
- 人力资源管理实践与操作手册
- 2024-2025学年福建省厦门市大同中学下学期八年级数学期中考试卷
- (正式版)DB14∕T 3538-2025 《旅游饭店客房清洁服务规范》
- 检察机关知识产权培训课件
- 房产抖音培训课件
- 中亚地区-教学课件
- 文书模板-诗词学会会员入会申请书
- 感染性休克诊治指南
- 江苏省低空空域协同管理办法(试行)
- 肿瘤代谢与营养
- 人保农险理赔试题
- 安徽省A10联盟2024-2025学年高一下学期4月期中政治试卷(扫描版含答案)
评论
0/150
提交评论