清华大学的CAD二次开发电子教LIS课件

上传人:阳*** 文档编号:113444878 上传时间:2022-06-25 格式:PPT 页数:44 大小:641.50KB
收藏 版权申诉 举报 下载
清华大学的CAD二次开发电子教LIS课件_第1页
第1页 / 共44页
清华大学的CAD二次开发电子教LIS课件_第2页
第2页 / 共44页
清华大学的CAD二次开发电子教LIS课件_第3页
第3页 / 共44页
资源描述:

《清华大学的CAD二次开发电子教LIS课件》由会员分享,可在线阅读,更多相关《清华大学的CAD二次开发电子教LIS课件(44页珍藏版)》请在装配图网上搜索。

1、清华大学的CAD二次开发电子教LIS第第7章章 建立应用程序建立应用程序 清华大学的CAD二次开发电子教LIS AotuCAD AotuCAD既可以将直接加载的既可以将直接加载的AutoLISPAutoLISP源代码解释执行,源代码解释执行,也可以通过编译器先将也可以通过编译器先将AutoLISPAutoLISP源代码编译为可执行程序,然源代码编译为可执行程序,然后加载执行。前者的优点是可随时测试或修改源代码,可以利后加载执行。前者的优点是可随时测试或修改源代码,可以利用所有的调试程序的工具。后者的优点是提高了执行速度、对用所有的调试程序的工具。后者的优点是提高了执行速度、对源代码保密。源代码

2、保密。 如果确认已加载过的如果确认已加载过的AutoLISPAutoLISP源代码运行正常,则应将该源代码运行正常,则应将该源代码编译为可执行的机器代码文件。该文件的扩展名为源代码编译为可执行的机器代码文件。该文件的扩展名为.fas.fas,是只有机器才能认识的目标文件。这样,不仅提高了,是只有机器才能认识的目标文件。这样,不仅提高了程序的加载和运行速度,也起到了保护源代码的作用。程序的加载和运行速度,也起到了保护源代码的作用。Visual Visual LISPLISP还可生成更复杂的扩展名为还可生成更复杂的扩展名为.vlx.vlx的可执行文件。该文件的可执行文件。该文件是包括已编译的是包括

3、已编译的AutoLISPAutoLISP代码和代码和dcldcl、vbavba等资源文件,是一个等资源文件,是一个打包的应用程序。打包的应用程序。 Visual LISPVisual LISP可以用可以用vlisp-compilevlisp-compile函数编译单个的函数编译单个的AutoLISPAutoLISP文件,也可以用文件,也可以用 生成应用程序向导生成应用程序向导 ,将多个,将多个AutoLISPAutoLISP文件编译成单个的文件编译成单个的.fas .fas 和和.vlx.vlx文件。文件。 清华大学的CAD二次开发电子教LIS7.1 通过通过Visual LISP_compi

4、le 函数编译单个文件函数编译单个文件 该函数的调用格式为:该函数的调用格式为: (vlisp-compile mode out-) 其中:其中:mode为编译的模式、为源文件的名字、为编译的模式、为源文件的名字、out-为编译后输出的为编译后输出的.fas类型的执行文件的名字。类型的执行文件的名字。1.选择编译模式选择编译模式 mode 参数指定编译模式,它可以是以下三种编译模式之一:参数指定编译模式,它可以是以下三种编译模式之一:(1)st 标准编译模式标准编译模式标准编译模式可以生成最小的执行文件,它适合于只包括单个文件的程序。标准编译模式可以生成最小的执行文件,它适合于只包括单个文件的

5、程序。(2)lsm 优化并间接链接优化并间接链接(3)lsa 优化并直接链接优化并直接链接 优化选项可使生成的的编译文件效率更高,它适合于较大而且复杂的程序。优化选项可使生成的的编译文件效率更高,它适合于较大而且复杂的程序。优化的基本功能如下:优化的基本功能如下:清华大学的CAD二次开发电子教LIS 对已编译函数直接引用,而不是引用函数名。该功能可提高代码的运行速对已编译函数直接引用,而不是引用函数名。该功能可提高代码的运行速度并防止在运行时对函数的重定义。度并防止在运行时对函数的重定义。 去掉函数名使得已编译代码更安全、减少程序的长度和缩短程序的加载时去掉函数名使得已编译代码更安全、减少程序

6、的长度和缩短程序的加载时间。间。 去掉所有局部变量名并对其直接链接引用,同样使得已编译代码更安全、去掉所有局部变量名并对其直接链接引用,同样使得已编译代码更安全、并减小程序的大小和加载程序所用的时间。并减小程序的大小和加载程序所用的时间。2. 确定要编译的确定要编译的LSP源文件源文件 如果源文件在如果源文件在AutoCAD支持的搜索路径下,可以不包括路径名。选择支持的搜索路径下,可以不包括路径名。选择AutoCAD菜单菜单ToolsOptions,然后打开,然后打开Files选项卡并选取选项卡并选取Support Path,可设置文件搜索路径。可设置文件搜索路径。 例如,已设置文件搜索路径为

7、例如,已设置文件搜索路径为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)清华大学的CAD二次开发电子教LIS Visual LISP默认源文件的扩展名为默

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

9、例如,假定安装目录为的安装目录下。例如,假定安装目录为d:autocad2006,用表达式用表达式(vlisp-compile st sample.lsp sample.fas)编译生成的编译生成的sample.fas,在在d:autocad2006 路径下。路径下。 通常,应该指定输出文件的完整路径,可以省略输出文件的扩展名。例如:通常,应该指定输出文件的完整路径,可以省略输出文件的扩展名。例如: (vlisp-compile st d:/user1/example1 d:/user2/example2)这样可以保证这样可以保证将输出文件放到指定的目录下。将输出文件放到指定的目录下。清华大学

10、的CAD二次开发电子教LIS4.举例举例 假定假定AutoLISP源文件的名字是源文件的名字是example1.lsp,存放在驱动器,存放在驱动器d的的user1目录目录下,文件的内容是定义绘制螺钉的命令,命令的名字是下,文件的内容是定义绘制螺钉的命令,命令的名字是screw。编译后的执。编译后的执行文件名字是行文件名字是example2存放在驱动器存放在驱动器d的的user2目录下。目录下。(1)在)在AutoCAD的的Command:或控制台:或控制台_$ 提示下,调用提示下,调用vlisp-compile函数函数(vlisp-compile st d:/user1/example1 d:

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

12、名或文件中所定义的函数名或AutoCAD命令名,最后报告所生成的执行文件的名命令名,最后报告所生成的执行文件的名字和路径。字和路径。清华大学的CAD二次开发电子教LIS 如果编译器检查到错误,将在如果编译器检查到错误,将在编译输出编译输出窗口显示出错信息并停止编译。窗口显示出错信息并停止编译。如果编译器遇到重定义现有的如果编译器遇到重定义现有的AutoLISP函数或为受保护的符号赋值,将会发函数或为受保护的符号赋值,将会发出警告消息。当编译器显示警告和出错信息时,双击该类信息,将自动切换出警告消息。当编译器显示警告和出错信息时,双击该类信息,将自动切换到文本编辑窗口,并亮显含有该类出错信息的源

13、程序代码。到文本编辑窗口,并亮显含有该类出错信息的源程序代码。图图7-1编译输出窗口编译输出窗口 清华大学的CAD二次开发电子教LIS5.加载和运行已编译程序加载和运行已编译程序 无论是无论是.fas文件,还是可以包含多个已编译程序的文件,还是可以包含多个已编译程序的.vlx打包文件,都打包文件,都可以在可以在Visual LISP控制台窗口、控制台窗口、AutoCAD命令提示处加载这些已编译的命令提示处加载这些已编译的 AutoLISP 程序,也可以在程序,也可以在AutoCAD菜单上选取菜单上选取ToolsLoad Application、ToolsAutoLISPLoad或或Visual

14、 LISP菜单上选取菜单上选取FileLoad File加载这些加载这些已编译的已编译的AutoLISP程序。程序。(1)在)在Visual LISP控制台窗口加载已编译的控制台窗口加载已编译的LSP程序程序 (load d:/user2/example.fas) 如果不指定文件扩展名,如果不指定文件扩展名,load 函数首先查找并加载扩展名为函数首先查找并加载扩展名为.vlx 的文的文件;如果没有找到件;如果没有找到.vlx文件,文件,load 函数将查找并加载函数将查找并加载.fas文件;如果没有文件;如果没有找到找到.fas文件,文件,load函数将查找并加载函数将查找并加载.lsp 文

15、件文件。清华大学的CAD二次开发电子教LIS 也可以选择也可以选择Visual LISP菜单菜单FileLoad File,通过随后弹出的,通过随后弹出的Load lisp file对话框来选择要加载的文件。对话框来选择要加载的文件。(2)在)在Visual LISP控制台提示下,输入用括号括起的函数名,即可运行该控制台提示下,输入用括号括起的函数名,即可运行该函数。运行用函数。运行用LISP定义的定义的AutoCAD命令,不能省略命令名前面的命令,不能省略命令名前面的C:而且而且必须用括号括起。必须用括号括起。 在在AutoCAD窗口调用函数时,输入的函数名和参数用括号括起,调用窗口调用函数

16、时,输入的函数名和参数用括号括起,调用LISP定义的定义的AutoCAD命令时,直接键入自定义的命令时,直接键入自定义的AutoCAD命令名。命令名。 (3)加载)加载 AutoLISP 扩展函数扩展函数 Visual LISP对对AutoLISP语言进行了扩展,这些扩展函数的名称以语言进行了扩展,这些扩展函数的名称以 vla-、vlax-和和vlr-开头。启动开头。启动AutoCAD时它们不会被自动加载。在使用这些函数之时它们不会被自动加载。在使用这些函数之前,必须调用前,必须调用vl-load-com函数加载这些函数加载这些AutoLISP扩展函数。其格式如下:扩展函数。其格式如下: (v

17、l-load-com) 清华大学的CAD二次开发电子教LIS7.27.2用应用程序生成器创建应用程序用应用程序生成器创建应用程序 应用程序生成器以向导的方式将应用程序生成器以向导的方式将AutoLISPAutoLISP源代码、已编译的源代码、已编译的AutoLISPAutoLISP程程序、对话框定义文件等资源文件生成独立的可执行文件,该文件的扩展名为序、对话框定义文件等资源文件生成独立的可执行文件,该文件的扩展名为.vlx.vlx,称为,称为VLXVLX文件。文件。 应用程序生成器在创建应用程序生成器在创建VLXVLX文件的同时,还生成了展名为文件的同时,还生成了展名为.fas.fas的已编的

18、已编译的译的AutoLISPAutoLISP文件,扩展名为文件,扩展名为.prv.prv的程序生成文件。后者包括的程序生成文件。后者包括Visual Visual LISPLISP创建应用程序所需的所有指令。创建应用程序所需的所有指令。 用应用程序生成器创建应用程序之前,应该对源程序进行完整的调试或用应用程序生成器创建应用程序之前,应该对源程序进行完整的调试或试运行,以免在生成过程中出现的编译错误导致其不能完成创建工作。试运行,以免在生成过程中出现的编译错误导致其不能完成创建工作。 假定假定gear.lspgear.lsp是以对话框为输入界面的绘制齿轮的是以对话框为输入界面的绘制齿轮的LISP

19、LISP源程序,源程序,gear.dclgear.dcl是定义输入齿轮参数的对话框文件,它们存放在驱动器是定义输入齿轮参数的对话框文件,它们存放在驱动器d d的的user1user1目录下,目录下, 创建的应用程序名字为创建的应用程序名字为chilun chilun ,存放在驱动器,存放在驱动器D D的的user2user2目录目录下。用应用程序生成器创建可执行的程序步骤如下:下。用应用程序生成器创建可执行的程序步骤如下:清华大学的CAD二次开发电子教LIS(1) (1) 调用应用程序生成向导调用应用程序生成向导 从从Visual LISPVisual LISP菜单上选择菜单上选择F File

20、ileM Make Aplicationake AplicationN New Aplication ew Aplication WizardWizard,启动向导。,启动向导。Visual LISPVisual LISP将显示图将显示图7-27-2所示向导模式对话框。所示向导模式对话框。图图7-2向导模式对话框向导模式对话框 清华大学的CAD二次开发电子教LIS(2) (2) 确定向导模式确定向导模式 应用程序生成向导有应用程序生成向导有SimpleSimple(简单)和(简单)和ExpertExpert(专家)两种模式。在(专家)两种模式。在简单模式下,只需指出简单模式下,只需指出LISP

21、LISP源文件、源文件、LISPLISP编译文件或编译文件或Visual LISPVisual LISP工程文件工程文件和要创建的文件名;在专家模式下,可以设置许多其他的选项。如果是单一和要创建的文件名;在专家模式下,可以设置许多其他的选项。如果是单一LISPLISP程序,应该选程序,应该选SimpleSimple模式,本例因为还要包含有对话框文件,因此选模式,本例因为还要包含有对话框文件,因此选择择ExpertExpert模式。单击模式。单击NextNext按钮。将弹出图按钮。将弹出图7-37-3所示所示应用程序路径应用程序路径对话框。对话框。图图7-3应用程序路径对话框应用程序路径对话框

22、清华大学的CAD二次开发电子教LIS(3) (3) 确定待建程序的位置和名称确定待建程序的位置和名称 在图在图7-37-3所示应用程序路径对话框的所示应用程序路径对话框的Application LocationApplication Location编辑框填写编辑框填写应用程序所处的位置(目录)。可以通过应用程序所处的位置(目录)。可以通过BrowseBrowse(浏览)按钮在目录树上(浏览)按钮在目录树上指定应用程序所处的位置,也可以在文本框中输入完整的路径名。例如:指定应用程序所处的位置,也可以在文本框中输入完整的路径名。例如:d:/user2d:/user2。 在在Application

23、 NameApplication Name编辑框填写要创建的应用程序名。例如:编辑框填写要创建的应用程序名。例如:chilun,chilun,这样将在这样将在d:/user2/d:/user2/目录下创建应用程序文件目录下创建应用程序文件chilun.vlxchilun.vlx和程序生和程序生成文件成文件chilun.prvchilun.prv。图图7-4应用选项对话框应用选项对话框 在简单模式和专家模式在简单模式和专家模式下都会出现图下都会出现图7-37-3所示应用所示应用程序路径对话框。程序路径对话框。 单击单击Next按钮。弹出图按钮。弹出图7-4所示所示应用选项应用选项对话框。对话框。

24、 本例不打开本例不打开Separate Separate NamespaceNamespace切换开关,单击切换开关,单击NextNext按钮将弹出图按钮将弹出图7-57-5所示所示的的包含包含LISPLISP文件文件对话框。对话框。清华大学的CAD二次开发电子教LIS(5 5)确定)确定LISPLISP文件的类型文件的类型 LISP文件可以是文件可以是AutoLISP源代码文件、编译源代码文件、编译AutoLISP文件文件(FAS)或或Visual LISP工程文件三种类型。通过图工程文件三种类型。通过图7-5所示的包含所示的包含LISP文件对话框的下拉菜单文件对话框的下拉菜单确定确定LIS

25、P文件类型。文件类型。 图图7-5包含包含LISP文件对话框文件对话框 例如选择了例如选择了Lisp source filesLisp source files类型,并且单击类型,并且单击AddAdd按钮,将弹出图按钮,将弹出图7-67-6所示所示添加添加lisplisp源文件源文件对话框。对话框。清华大学的CAD二次开发电子教LIS(6 6)添加)添加lisplisp源文件源文件 可以使用标准的可以使用标准的WindowsWindows文件选取方法来选取多个文件。在图文件选取方法来选取多个文件。在图7-67-6所示对所示对话框上选取话框上选取gear.lspgear.lsp文件之后,单击文件

26、之后,单击打开打开按钮可以将该文件添加到应用程序按钮可以将该文件添加到应用程序中,见图中,见图7-77-7所示包含所示包含LispLisp文件的对话框。如果想继续添加其他类型的文件,文件的对话框。如果想继续添加其他类型的文件,先从下拉列表处选择文件类型后再单击先从下拉列表处选择文件类型后再单击AddAdd按钮。按钮。图图7-67-6添加添加lisplisp源文件对话框源文件对话框 如果指定的是如果指定的是AutoLISPAutoLISP源文件,源文件,Visual LISPVisual LISP在打包成在打包成VLXVLX文件前先编译文件前先编译成成FASFAS类型的文件;如果指定的是类型的文

27、件;如果指定的是FASFAS类型的文件,则直接将其打包;如果类型的文件,则直接将其打包;如果指定的是指定的是PRJPRJ类型的工程文件,则工程文件中的所有文件将根据其具体类型类型的工程文件,则工程文件中的所有文件将根据其具体类型先编译再打包或直接打包成先编译再打包或直接打包成VLXVLX文件。文件。清华大学的CAD二次开发电子教LIS 如果要从应用程序中删除文件,只需选取这些文件后单击如果要从应用程序中删除文件,只需选取这些文件后单击RemoveRemove按钮按钮即可,也可以在选取一个或多个文件后,单击鼠标右键并从快捷菜单中选即可,也可以在选取一个或多个文件后,单击鼠标右键并从快捷菜单中选择

28、择RemoveRemove项。项。图图7-77-7包含包含LispLisp文件的对话框文件的对话框清华大学的CAD二次开发电子教LIS 应用程序文件的加载顺序和它们在应用程序文件的加载顺序和它们在 LISP Files to Include 对话框中列对话框中列出的顺序相同。如果在加载时调用某函数,则必须在调用该函数前定义它。出的顺序相同。如果在加载时调用某函数,则必须在调用该函数前定义它。在这种情况下,应该把定义该函数的文件放在调用该函数的文件之前。选在这种情况下,应该把定义该函数的文件放在调用该函数的文件之前。选取待调整的文件名,然后点取下列按钮即可。取待调整的文件名,然后点取下列按钮即可

29、。 Top Top: 移到列表顶端。移到列表顶端。 Up Up:移到上一文件之前。:移到上一文件之前。 Down Down:移到下一文件之后。:移到下一文件之后。 Bottom Bottom:移到列表底端。:移到列表底端。 也可以先选取待调整的文件名,然后单击鼠标右键,从随后弹出的快也可以先选取待调整的文件名,然后单击鼠标右键,从随后弹出的快捷菜单上选取相应选项。如果是工程文件,因其内的源文件顺序已在工程捷菜单上选取相应选项。如果是工程文件,因其内的源文件顺序已在工程文件内定义,只能通过修改工程文件以改变源文件的顺序。文件内定义,只能通过修改工程文件以改变源文件的顺序。清华大学的CAD二次开发

30、电子教LIS 由于将应用程序生成向导确定为专家模式,因此,单击由于将应用程序生成向导确定为专家模式,因此,单击NextNext按钮,将按钮,将弹出图弹出图7-87-8所示的所示的包含资源文件包含资源文件对话框。对话框。图图7-8 包含资源文件对话框包含资源文件对话框 清华大学的CAD二次开发电子教LIS(7 7)添加资源文件)添加资源文件 通过添加资源文件对话框。可以用添加源文件的类似操作添加(移去)通过添加资源文件对话框。可以用添加源文件的类似操作添加(移去)对话框控制对话框控制DCL文件、文件、DVB 文件、文本文件等资源文件。如果添加的是文件、文本文件等资源文件。如果添加的是LISP工程

31、文件,在该工程文件中的所有文件都将被编译并包含到工程文件,在该工程文件中的所有文件都将被编译并包含到VLX文件。文件。 图图7-9添加添加DCL文件对话框文件对话框 清华大学的CAD二次开发电子教LIS 点取图点取图7-8所示对话框的下拉列表,选取所示对话框的下拉列表,选取DCL files,点取,点取Add按钮,将弹按钮,将弹出图出图7-9所示的添加所示的添加DCL文件对话框。选取文件对话框。选取gear.dcl文件,点取文件,点取打开打开按钮,该按钮,该DCL文件将被加入到应用程序中,见图文件将被加入到应用程序中,见图710。 图图7-107-10包含资源文件对话框包含资源文件对话框单击单

32、击Next按钮,将弹出图按钮,将弹出图7-11所示的所示的确定编译选项确定编译选项对话框。对话框。 清华大学的CAD二次开发电子教LIS(8 8)确定编译选项)确定编译选项 仅在专家模式下才出现图仅在专家模式下才出现图7-117-11所示确定编译选项如果选择了所示确定编译选项如果选择了StandardStandard,此为标准模式,将生成最小的输出文件,它适合于只包括单个文件的程序;此为标准模式,将生成最小的输出文件,它适合于只包括单个文件的程序;如果选择了如果选择了Optimize and LinkOptimize and Link,此为优化和链接模式,可使生成的的编译,此为优化和链接模式,

33、可使生成的的编译文件效率更高,它适合于较大和较复杂的程序。文件效率更高,它适合于较大和较复杂的程序。图图7-11确定编译选项对话框确定编译选项对话框 本例选择两种模式均可,确定编译选项后,单击本例选择两种模式均可,确定编译选项后,单击Next按钮将弹出图按钮将弹出图7-12所所示的示的查看选项查看选项/编译编译应用程序应用程序对话框。对话框。 清华大学的CAD二次开发电子教LIS(9 9) 创建应用程序创建应用程序 这是应用程序生成向导的最后一步,单击这是应用程序生成向导的最后一步,单击BackBack按钮,返回到上一步,查按钮,返回到上一步,查看上一步的选择;单击看上一步的选择;单击Fini

34、shFinish按钮,创建应用程序结束。按钮,创建应用程序结束。图图7-12查看选项查看选项/编译应用程序对话框编译应用程序对话框 清华大学的CAD二次开发电子教LIS 运行运行应用程序生成应用程序生成向导结束。在向导结束。在d:user2d:user2路径下,生成了路径下,生成了chilun.prvchilun.prv、chilun.vlxchilun.vlx和和gear.fasgear.fas文件。其中文件。其中chilun.prvchilun.prv是是包括包括Visual LISPVisual LISP创建应用程序所需的程序生成文件创建应用程序所需的程序生成文件,gear.vlx,ge

35、ar.vlx是打包的可执行文件,是打包的可执行文件,gear.fasgear.fas是编译是编译gear.lspgear.lsp时生成的目标时生成的目标文件。加载文件。加载gear.vlxgear.vlx或或gear.fasgear.fas,在,在CommandCommand: 提示下键入提示下键入GEARGEAR即可调用该应用程序绘制齿轮。即可调用该应用程序绘制齿轮。 如果只有如果只有AutoLISPAutoLISP文件(源文件或目标文件),在创建应用文件(源文件或目标文件),在创建应用程序时,第程序时,第(2)(2)步应选择步应选择SimpleSimple(简单)作为向导的模式,这样(简单

36、)作为向导的模式,这样可以省略第(可以省略第(4 4)、()、(7 7)和()和(8 8)步。)步。清华大学的CAD二次开发电子教LIS7.3 7.3 利用工程管理器管理和维护利用工程管理器管理和维护LISPLISP文件文件 AutoLISPAutoLISP应用程序通常都是由多个独立的应用程序通常都是由多个独立的LISPLISP文件组成的。随着应用程文件组成的。随着应用程序中文件数量的增加,对这些文件的管理和维护就变得很困难。在这种情况序中文件数量的增加,对这些文件的管理和维护就变得很困难。在这种情况下,应该使用下,应该使用Visual LISPVisual LISP提供的最有效的工具提供的最

37、有效的工具工程管理器。工程管理器。7.3.1 7.3.1 工程管理器的功能工程管理器的功能 工程管理器通过命名的工程对工程所包含的工程管理器通过命名的工程对工程所包含的LISPLISP文件进行管理和维护。文件进行管理和维护。一个工程在本质上就是一个一个工程在本质上就是一个LISPLISP源文件表和一套如何编译这些文件的规则。源文件表和一套如何编译这些文件的规则。 工程管理器具有以下的功能。工程管理器具有以下的功能。 检查应用程序中哪些检查应用程序中哪些LISPLISP源文件尚未被编译或者在上一次编译后又被修源文件尚未被编译或者在上一次编译后又被修改过,并自动编译这样的一些文件。改过,并自动编译

38、这样的一些文件。 通过一个命名的工程的列表,可以很简单地查找并打开相关的文件。通过一个命名的工程的列表,可以很简单地查找并打开相关的文件。 可以在一个工程的所有的文件中查找指定的源程序代码。可以在一个工程的所有的文件中查找指定的源程序代码。 可以通过直接链接多个源文件中的相同描述来优化编译结果。可以通过直接链接多个源文件中的相同描述来优化编译结果。 清华大学的CAD二次开发电子教LIS 下面通过一个实例介绍利用工程管理器管理和维护多个下面通过一个实例介绍利用工程管理器管理和维护多个LISPLISP文文件的有关操作。件的有关操作。【例【例7-17-1】定义以递规方式绘制旋转正六边形的命令。正六边

39、形】定义以递规方式绘制旋转正六边形的命令。正六边形的旋转中心的旋转中心pcpc、最大边长、最大边长lmaxlmax、最小边长、最小边长lminlmin和旋转角和旋转角alfalf是交是交互输入的参数。正六边形在旋转过程中,除了最外层的正六边形互输入的参数。正六边形在旋转过程中,除了最外层的正六边形之外,每一个正六边形的顶点都在前一个正六边形的边上,当正之外,每一个正六边形的顶点都在前一个正六边形的边上,当正六边形的边长缩短到近似最小边长六边形的边长缩短到近似最小边长lminlmin时,绘制结束,见图时,绘制结束,见图7-137-13(a a)。从图)。从图7-137-13(b b)可以看出每个

40、正六边形与旋转后的下一个)可以看出每个正六边形与旋转后的下一个正六边形的边长之间具有以下的关系:正六边形的边长之间具有以下的关系: )60sin(2)120sin(1LalfL清华大学的CAD二次开发电子教LIS(a a) (b b) 图图7-137-13以递归方式绘的制旋转正六边形以递归方式绘的制旋转正六边形 为了演示多文件的操作,将该程序分别存放于两个文件。为了演示多文件的操作,将该程序分别存放于两个文件。文件存放该程序的主函数部分。主函数定义了名字为文件存放该程序的主函数部分。主函数定义了名字为r-hexagonr-hexagon的的AutoCADAutoCAD命令。文件定义了名字为命令

41、。文件定义了名字为hexagonhexagon的函数。函数的函数。函数hexagonhexagon被主函数调用。它们都存放在被主函数调用。它们都存放在d d盘的盘的user1user1目录下。目录下。 清华大学的CAD二次开发电子教LIS文件的源代码如下:文件的源代码如下:(defun c:r-hexagon( / pc lmax lmin alf ) (defun c:r-hexagon( / pc lmax lmin alf ) (setvar cmdecho 0) (setvar cmdecho 0) ; ;关闭普通命令提示信息关闭普通命令提示信息 (setvar blipmode 0)

42、 (setvar blipmode 0) ; ;关闭光标痕迹关闭光标痕迹 (setvar osmode 0) (setvar osmode 0) ; ;关闭对象捕捉状态关闭对象捕捉状态 (setq pc(getpoint n(setq pc(getpoint n输入正六边形的旋转中心输入正六边形的旋转中心:):) (setq lmax(getdist pc n (setq lmax(getdist pc n输入正六边形的最大边长输入正六边形的最大边长:):) (setq lmin(getdist pc n (setq lmin(getdist pc n输入正六边形的最小边长输入正六边形的最小边

43、长:):) (setq alf(getangle pc n (setq alf(getangle pc n输入正六边形的旋转角输入正六边形的旋转角:):) (hexagon pc lmax lmin 0.0)(hexagon pc lmax lmin 0.0) ; ;调用递归方式绘制旋转正六边形的函数调用递归方式绘制旋转正六边形的函数 (princ) (princ) ; ;静默退出静默退出) )清华大学的CAD二次开发电子教LIS文件的源代码如下:文件的源代码如下:(defun (defun hexagon (pc l lmin phi )hexagon (pc l lmin phi ) ;

44、;变元变元phiphi是正六边形的初始角度是正六边形的初始角度 (command pline (polar pc phi l)(command pline (polar pc phi l) (polar pc (+ phi (/ pi 3.0 ) l) (polar pc (+ phi (/ pi 3.0 ) l) (polar pc (+ phi (/ pi 1.5 ) l) (polar pc (+ phi (/ pi 1.5 ) l) (polar pc (+ phi pi) l) (polar pc (+ phi pi) l) (polar pc (+ phi (/ pi 0.75)

45、l) (polar pc (+ phi (/ pi 0.75) l) (polar pc (+ phi (/ pi 0.6 ) l) (polar pc (+ phi (/ pi 0.6 ) l) c c ) ) (if (= l lmin) (if (= l lmin) (progn (progn (setq l(/ l (+ (cos alf) ( (setq l(/ l (+ (cos alf) (* * (sin alf) 0.5773503) (sin alf) 0.5773503); ;下一个正六边形的边长下一个正六边形的边长 (setq phi (+ phi alf) (setq

46、 phi (+ phi alf) ; ;下一个正六边形的旋转角度下一个正六边形的旋转角度 (hexagon pc l lmin phi)(hexagon pc l lmin phi) ; ;绘制下一个正六边形绘制下一个正六边形 ) )清华大学的CAD二次开发电子教LIS7.3.2 7.3.2 创建一个工程创建一个工程1. 1. 创建一个工程文件创建一个工程文件 选择菜单选择菜单ProjectProjectNew projectNew project,将弹出图,将弹出图7-147-14所示的新所示的新工程对话框,此对话框用于确定新工程的路径和文件名。例如工程对话框,此对话框用于确定新工程的路径和

47、文件名。例如输入工程的名字为输入工程的名字为rhrh,存放在,存放在d d盘的盘的user2user2目录下。目录下。 图图7-147-14新工程对话框新工程对话框 清华大学的CAD二次开发电子教LIS2. 2. 向工程添加向工程添加LISPLISP源文件源文件 单击图单击图7-147-14新工程对话框的保存按钮,将弹出图新工程对话框的保存按钮,将弹出图7-157-15所示所示的工程特性对话框。该对的工程特性对话框。该对话框有话框有工程文件工程文件和和编译选编译选项项两个选项卡。工程文件两个选项卡。工程文件选项卡用于向工程添加选项卡用于向工程添加LISPLISP源文件。源文件。 图图7-157

48、-15工程特性对话框工程特性对话框 清华大学的CAD二次开发电子教LIS 图图7-157-15所示为工程文件选项卡。通过按钮所示为工程文件选项卡。通过按钮 指定指定LISPLISP源文件源文件的路径,路径下方的列表显示了该路径下所有的的路径,路径下方的列表显示了该路径下所有的LISPLISP文件名。文件名。选取该列表的一个或多个文件,单击按钮选取该列表的一个或多个文件,单击按钮 ,被选的文件就会,被选的文件就会转移到右边的列表内。右边的列表显示了该工程当前包含的所转移到右边的列表内。右边的列表显示了该工程当前包含的所有有LISPLISP文件名。文件名。 如果选取右边列表的一个文件,单击按钮如果

49、选取右边列表的一个文件,单击按钮 ,被选的文件,被选的文件就会从当前的工程中移回原处。按钮就会从当前的工程中移回原处。按钮TopTop、UpUp、DownDown和和BottomBottom用用于排列于排列LISPLISP文件在列表框中的顺序,该顺序即为加载这些文件文件在列表框中的顺序,该顺序即为加载这些文件的顺序。的顺序。 例如,在图例如,在图7-157-15所示为工程文件选项卡上单击按钮所示为工程文件选项卡上单击按钮 ,指,指定定LISPLISP源文件的路径为源文件的路径为d d盘的盘的user1user1。路径下方的列表内显示了。路径下方的列表内显示了user1user1路径下的路径下的

50、LISPLISP文件名。选取该列表的文件文件名。选取该列表的文件file1file1和和file2file2之之后,单击按钮后,单击按钮 ,文件,文件file1file1和和file2file2将移至右边的列表作为将移至右边的列表作为rhrh工程的成员。单击确定按钮,将弹出图工程的成员。单击确定按钮,将弹出图7-167-16所示的工程窗口,所示的工程窗口,名字为名字为rhrh的工程创建完毕,同时在的工程创建完毕,同时在d d盘的盘的user2user2目录下得到了名目录下得到了名字为字为rh.prjrh.prj的工程文件。的工程文件。 清华大学的CAD二次开发电子教LIS7.3.3 7.3.3

51、 工程窗口工程窗口 工程窗口的标题显示了该工程的名字,列表框内显示了该工工程窗口的标题显示了该工程的名字,列表框内显示了该工程包含的所有的程包含的所有的LISPLISP源文件的名字,双击列表框内的任意一个源文件的名字,双击列表框内的任意一个文件名(无论文件是否打开)即可激活包含该文件的文本编辑文件名(无论文件是否打开)即可激活包含该文件的文本编辑窗口。窗口。 图图7-167-16工程窗口工程窗口 工程窗口的工具栏上有工程窗口的工具栏上有5 5个按钮,它们分别具有以下的功能。个按钮,它们分别具有以下的功能。 :弹出图:弹出图7-157-15所示的工程特性对话框,通过该对话框修改该工所示的工程特性

52、对话框,通过该对话框修改该工程的特性。程的特性。清华大学的CAD二次开发电子教LIS :加载工程中所有经过编译的:加载工程中所有经过编译的.fas.fas文件。如果某些文件。如果某些LISPLISP文件尚未被编译,文件尚未被编译,则显示如图则显示如图7-177-17所示的是否编译这些文件的询问信息。单击按钮所示的是否编译这些文件的询问信息。单击按钮 是是 ,则首,则首先编译这些文件,然后将其加载,单击按钮先编译这些文件,然后将其加载,单击按钮 否否 ,则直接加载这些,则直接加载这些LISPLISP源文源文件和已经存在的件和已经存在的.fas.fas文件。文件。 假定文件和尚未被编译,单击此按钮

53、,在图假定文件和尚未被编译,单击此按钮,在图7-177-17所示的询问框中单击按所示的询问框中单击按钮钮 是是 ,则首先编译这两个文件,然后加载刚生成的和,则首先编译这两个文件,然后加载刚生成的和file2. fasfile2. fas。这时在。这时在AutoCADAutoCAD的的CommandCommand: 提示下,键入提示下,键入r-hexagonr-hexagon命令即可绘制旋转正六边形命令即可绘制旋转正六边形。清华大学的CAD二次开发电子教LIS :加载工程中所有的:加载工程中所有的LISPLISP源文件。源文件。 :编译工程中所有的在上一次编译后被修改过的文件,生成新的:编译工程

54、中所有的在上一次编译后被修改过的文件,生成新的.fas.fas文文件。件。 :重新编译工程中所有的:重新编译工程中所有的LISPLISP,无论这些文件是否已经被编译过。,无论这些文件是否已经被编译过。以上操作也可以通过工程的快捷菜单的相应选项完成。将鼠标移至工程窗以上操作也可以通过工程的快捷菜单的相应选项完成。将鼠标移至工程窗口的列表框内,单击鼠标右键,将弹出图口的列表框内,单击鼠标右键,将弹出图7-187-18所示的快捷菜单,其中各菜所示的快捷菜单,其中各菜单项的功能见下一页。单项的功能见下一页。图图7-187-18工程窗口的快捷菜单工程窗口的快捷菜单 清华大学的CAD二次开发电子教LISE

55、ditEdit:编辑选中的文件:编辑选中的文件Add FileAdd File:打开工程特性对话框,向工程中添加文件:打开工程特性对话框,向工程中添加文件Remove fileRemove file:从工程中删除选中的文件:从工程中删除选中的文件LoadLoad:加载所选文件的:加载所选文件的.fas.fas文件,如果所选文件尚未被编译,则加载其文件,如果所选文件尚未被编译,则加载其LISPLISP源文件源文件Load sourceLoad source:加载所选文件的:加载所选文件的LISPLISP源文件源文件Check syntaxCheck syntax:对所选的文件进行语法检查:对所选

56、的文件进行语法检查TouchTouch: 处理处理 所选的文件。经过所选的文件。经过 处理处理 的文件即使是新编译过的,单击图标的文件即使是新编译过的,单击图标 时时 也要再次重新编译。也要再次重新编译。Arrange filesArrange files:根据该菜单项的下一级菜单提供的规则对工程中的成员排序:根据该菜单项的下一级菜单提供的规则对工程中的成员排序Multiple SelectionMultiple Selection:单击该菜单项可以切换否具有多选功能的状态。若设置为多:单击该菜单项可以切换否具有多选功能的状态。若设置为多 选,菜单项前加标记选,菜单项前加标记 UnSelect

57、 allUnSelect all:没有一个文件被选取时,选取所有文件。已经选取了一些文件时:没有一个文件被选取时,选取所有文件。已经选取了一些文件时 ,放弃选取的那些文件,放弃选取的那些文件Close projectClose project:关闭当前的工程:关闭当前的工程Save proct asSave proct as:将当前的工程另存为其他名字将当前的工程另存为其他名字 清华大学的CAD二次开发电子教LIS7.3.4 7.3.4 在工程中查找源程序代码在工程中查找源程序代码 单击查找按钮单击查找按钮 ,弹出图,弹出图7-197-19所示的查找对话框。打开所示的查找对话框。打开Proje

58、ctProject互锁按钮,通过互锁按钮,通过ProjectProject下拉列表选取一个工程,在下拉列表选取一个工程,在Find WhatFind What列表输入或选择要查找的源程序代码,单击列表输入或选择要查找的源程序代码,单击FindFind按钮按钮,在图,在图7-207-20所示的查找输出窗口报告了在指定工程的所有文件所示的查找输出窗口报告了在指定工程的所有文件中查找的结果。中查找的结果。 图图7-197-19查找对话框查找对话框 清华大学的CAD二次开发电子教LIS 例如,通过例如,通过ProjectProject下拉列表选取工程下拉列表选取工程rhrh,在,在Find WhatF

59、ind What列表列表输入输入hexagonhexagon,单击,单击FindFind按钮,在图按钮,在图7-207-20所示的查找输出窗口中所示的查找输出窗口中显示了在文件和中含有源代码显示了在文件和中含有源代码hexagonhexagon的的4 4个表达式。双击其中任个表达式。双击其中任意一个表达式,就会激活该表达式所在的文件,并且亮显所查找意一个表达式,就会激活该表达式所在的文件,并且亮显所查找的源代码,例如的源代码,例如hexagonhexagon处于被选状态。处于被选状态。 图图7-207-20查找输出窗口查找输出窗口 清华大学的CAD二次开发电子教LIS7.3.5 7.3.5 通

60、过工程创建应用程序通过工程创建应用程序 上一节介绍了用应用程序生成器创建应用程序的全过程。在上一节介绍了用应用程序生成器创建应用程序的全过程。在第第5 5步确定步确定LISPLISP文件的类型时,除了选择文件的类型时,除了选择LISPLISP源文件和编译过的源文件和编译过的LISPLISP文件之外,还可以选择文件之外,还可以选择Visual LISPVisual LISP工程文件。通过指定的工程文件。通过指定的工程文件名,该工程所包含的所有文件都被添加到应用程序中工程文件名,该工程所包含的所有文件都被添加到应用程序中。 例如,通过图例如,通过图7-217-21所示的包含所示的包含LISPLIS

61、P文件对话框的下拉列表选文件对话框的下拉列表选择择VisualLISP projectVisualLISP project,单击,单击AddAdd按钮,通过随后弹出的按钮,通过随后弹出的Add Add VisualLISP project filesVisualLISP project files对话框选择对话框选择d d盘的盘的user2user2目录下的目录下的rh.prjrh.prj工程文件,见图工程文件,见图7-217-21。最后单击。最后单击NextNext按钮,进行下一步按钮,进行下一步操作。此时操作。此时d d盘的盘的user1user1目录下的文件和被添加到当前的应用程目录下的

62、文件和被添加到当前的应用程序。序。清华大学的CAD二次开发电子教LIS图图7-217-21选择了选择了VisualLISP projectVisualLISP project选项的包含选项的包含LISPLISP文件的对话框文件的对话框 清华大学的CAD二次开发电子教LIS7.3.6 7.3.6 优化应用程序优化应用程序 通过通过Visual LISPVisual LISP编译选项的优化功能可以得到运行效率更编译选项的优化功能可以得到运行效率更高的编译代码。单击图高的编译代码。单击图7-157-15所示的工程特性对话框的编译选项所示的工程特性对话框的编译选项标签,即可显示图标签,即可显示图7-2

63、27-22所示的编译选项卡。该选项卡包含以下所示的编译选项卡。该选项卡包含以下的一些工程编译选项。的一些工程编译选项。 图图7-227-22编译选项卡编译选项卡 清华大学的CAD二次开发电子教LIS1. Compilation Mode1. Compilation Mode栏栏该栏的功能是确定设置编译模式,它有以下两个选项。该栏的功能是确定设置编译模式,它有以下两个选项。l l StandarStandar(标准):选择标准模式时,编译器将保留函数和全(标准):选择标准模式时,编译器将保留函数和全局变量的符号名,因为这些符号可能被其他程序引用。在引用某局变量的符号名,因为这些符号可能被其他程序

64、引用。在引用某一符号时,编译器将在符号表中查找这个符号。该模式比较适合一符号时,编译器将在符号表中查找这个符号。该模式比较适合于单个文件的程序。于单个文件的程序。l l OptimizeOptimize(优化):选择优化模式时,编译器将认为工程中的(优化):选择优化模式时,编译器将认为工程中的所有文件将最终生成一个完整的应用程序。因此编译器将不考虑所有文件将最终生成一个完整的应用程序。因此编译器将不考虑符号名,而是直接引用存放符号值的内存区域地址。优化模式可符号名,而是直接引用存放符号值的内存区域地址。优化模式可以生成体积更小,运行效率更高的应用程序,它比较适用于含有以生成体积更小,运行效率更

65、高的应用程序,它比较适用于含有事件反应器或对话框功能的程序。事件反应器或对话框功能的程序。清华大学的CAD二次开发电子教LIS2. Merge 2. Merge 栏栏 该栏的功能是确定合并文件的模式,它有以下两个选项。该栏的功能是确定合并文件的模式,它有以下两个选项。l l One module for each file: One module for each file:为每一个为每一个LISPLISP文件创建一个独立的文件创建一个独立的.fas.fas文件。文件。l l Single module for all: Single module for all:将工程中全部成员文件编译为一

66、个将工程中全部成员文件编译为一个.fas .fas 文件。文件。3. Link mode3. Link mode栏栏 该栏的功能是确定链接的模式,它有以下该栏的功能是确定链接的模式,它有以下3 3个选项。个选项。l l Do Not LinkDo Not Link(不链接)(不链接): :编译器将保存函数的符号,程序在引用函数时,是编译器将保存函数的符号,程序在引用函数时,是通过符号找到函数的内存地址。通过符号找到函数的内存地址。l l LinkLink(链接)(链接): :编译后的程序在引用函数时,不是通过函数名,而是直接访问编译后的程序在引用函数时,不是通过函数名,而是直接访问函数的内存地址,这样可以提高程序的运行效率。函数的内存地址,这样可以提高程序的运行效率。l l Internal Internal(内部)(内部): :编译器在编译结果中不保留函数名,而是把所有对函数的编译器在编译结果中不保留函数名,而是把所有对函数的引用表达式直接链接到函数的内存地址。内部链接能够明显提高程序运行的效率引用表达式直接链接到函数的内存地址。内部链接能够明显提高程序运行的效率,可以保护程序不会受

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!