




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章建立应用程序 AotuCAD既可以将直接加载的AutoLISP源代码解释执行 也可以通过编译器先将AutoLISP源代码编译为可执行程序 然后加载执行 前者的优点是可随时测试或修改源代码 可以利用所有的调试程序的工具 后者的优点是提高了执行速度 对源代码保密 如果确认已加载过的AutoLISP源代码运行正常 则应将该源代码编译为可执行的机器代码文件 该文件的扩展名为 fas 是只有机器才能认识的目标文件 这样 不仅提高了程序的加载和运行速度 也起到了保护源代码的作用 VisualLISP还可生成更复杂的扩展名为 vlx 的可执行文件 该文件是包括已编译的AutoLISP代码和dcl vba等资源文件 是一个打包的应用程序 VisualLISP可以用vlisp compile函数编译单个的AutoLISP文件 也可以用 生成应用程序向导 将多个AutoLISP文件编译成单个的 fas 和 vlx 文件 7 1通过VisualLISP compile函数编译单个文件该函数的调用格式为 vlisp compile mode filename out filename 其中 mode为编译的模式 filename为源文件的名字 out filename为编译后输出的 fas 类型的执行文件的名字 1 选择编译模式mode参数指定编译模式 它可以是以下三种编译模式之一 1 st标准编译模式标准编译模式可以生成最小的执行文件 它适合于只包括单个文件的程序 2 lsm优化并间接链接 3 lsa优化并直接链接优化选项可使生成的的编译文件效率更高 它适合于较大而且复杂的程序 优化的基本功能如下 对已编译函数直接引用 而不是引用函数名 该功能可提高代码的运行速度并防止在运行时对函数的重定义 去掉函数名使得已编译代码更安全 减少程序的长度和缩短程序的加载时间 去掉所有局部变量名并对其直接链接引用 同样使得已编译代码更安全 并减小程序的大小和加载程序所用的时间 2 确定要编译的LSP源文件如果源文件在AutoCAD支持的搜索路径下 可以不包括路径名 选择AutoCAD菜单工具 选项 然后打开文件选项卡并选取支持文件搜索路径 可设置文件搜索路径 例如 已设置文件搜索路径为 d user 就可以用表达式 vlisp compile st sample lsp 编译驱动器D的 user1 目录下的文件 sample lsp 如果 d user 不是文件搜索路径 那么 在指定源文件时必须包括完整的路径名 如 vlisp compile st d user example lsp 或 vlisp compile st d user example lsp VisualLISP默认源文件的扩展名为 lsp 3 确定编译器生成的输出文件名如果未指定输出文件名 编译器生成的文件和源文件同名同路径 扩展名为 fas 例如 vlisp compile st d user example lsp 编译生成的文件在 d user 路径下 文件名为 example fas 如果指定了输出文件名但没有指定输出文件的路径 VisualLISP将把输出文件放在AutoCAD的安装目录下 例如 假定安装目录为 d autocad2010 用表达式 vlisp compile st sample lsp sample fas 编译生成的sample fas 在 d autocad2010 路径下 通常 应该指定输出文件的完整路径 可以省略输出文件的扩展名 例如 vlisp compile st d user1 example1 d user2 example2 这样可以保证将输出文件放到指定的目录下 4 举例假定AutoLISP源文件的名字是example1 lsp 存放在驱动器d的user1目录下 文件的内容是定义绘制螺钉的命令 命令的名字是screw 编译后的执行文件名字是example2存放在驱动器d的user2目录下 1 在AutoCAD的命令 或控制台 提示下 调用vlisp compile函数 vlisp compile st d user1 example1 d user2 example2 以标准模式编译驱动器d的user1目录下的LSP文件 example1 lsp 在驱动器d的user2目录下得到可执行文件 example2 fas 2 了解编译输出窗口如果源程序没有错误 将在图7 1所示为编译输出窗口显示编译过程各阶段的有关信息 首先是源代码的语法和词汇检查 然后进行编译 并显示源文件中所定义的函数名或AutoCAD命令名 最后报告所生成的执行文件的名字和路径 如果编译器检查到错误 将在编译输出窗口显示出错信息并停止编译 如果编译器遇到重定义现有的AutoLISP函数或为受保护的符号赋值 将会发出警告消息 当编译器显示警告和出错信息时 双击该类信息 将自动切换到文本编辑窗口 并亮显含有该类出错信息的源程序代码 图7 1编译输出窗口 5 加载和运行已编译程序无论是 fas文件 还是可以包含多个已编译程序的 vlx打包文件 都可以在VisualLISP控制台窗口 AutoCAD命令提示处加载这些已编译的AutoLISP程序 工具 加载应用程序 工具 AutoLISP 加载应用程序或通过VisualLISP菜单选取文件 加载文件加载这些已编译的AutoLISP程序 1 用load函数加载已编译的LISP程序 load d user2 example fas 如果不指定文件扩展名 load函数首先查找并加载扩展名为 vlx的文件 如果没有找到 vlx文件 load函数将查找并加载 fas文件 如果没有找到 fas文件 load函数将查找并加载 lsp文件 2 运行自定义的函数或AutoCAD命令在VisualLISP控制台提示下 输入用括号括起的函数名 即可运行该函数 运行用LISP定义的AutoCAD命令 不能省略命令名前面的 C 而且必须用括号括起 在AutoCAD窗口调用函数时 输入的函数名和参数用括号括起 调用LISP定义的AutoCAD命令时 直接键入自定义的AutoCAD命令名 3 加载AutoLISP扩展函数VisualLISP对AutoLISP语言进行了扩展 这些扩展函数的名称以vla vlax 和vlr 开头 启动AutoCAD时它们不会被自动加载 在使用这些函数之前 必须调用vl load com函数加载这些AutoLISP扩展函数 其格式如下 vl load com 7 2用应用程序生成器创建应用程序应用程序生成器以向导的方式将AutoLISP源代码 已编译的AutoLISP程序 对话框定义文件等资源文件生成独立的可执行文件 该文件的扩展名为 vlx 称为VLX文件 应用程序生成器在创建VLX文件的同时 还生成了展名为 fas 的已编译的AutoLISP文件 扩展名为 prv 的程序生成文件 后者包括VisualLISP创建应用程序所需的所有指令 用应用程序生成器创建应用程序之前 应该对源程序进行完整的调试或试运行 以免在生成过程中出现的编译错误导致其不能完成创建工作 假定gear lsp是以对话框为输入界面的绘制齿轮的LISP源程序 gear dcl是定义输入齿轮参数的对话框文件 它们存放在驱动器d的user1目录下 创建的应用程序名字为 chilun 存放在驱动器D的user2目录下 用应用程序生成器创建可执行的程序步骤如下 1 调用应用程序生成向导从VisualLISP菜单上选择文件 生成应用程序 新建应用程序向导 VisualLISP将显示图7 2所示的向导模式对话框 图7 2向导模式对话框 2 确定向导模式应用程序生成向导有简单和专家两种模式 在简单模式下 只需指出LISP源文件 LISP编译文件或VisualLISP工程文件和要创建的文件名 在专家模式下 可以设置许多其他的选项 如果是单一LISP程序 应该选简单模式 本例因为还包含有对话框文件 因此选择专家模式 单击下一步按钮 将弹出图7 3所示应用程序目录对话框 图7 3应用程序路径对话框 3 确定待建程序的位置和名称在图7 3所示的应用程序目录对话框的应用程序位置编辑框填写应用程序所处的目录 可以通过浏览按钮在目录树上指定应用程序所处的位置 也可以在文本框中输入完整的路径名 例如 d user2 在应用程序名称编辑框填写要创建的应用程序名 例如 chilun 这样将在d user2 目录下创建应用程序文件chilun vlx gear fas和程序生成文件chilun prv 图7 4应用选项对话框 在简单模式和专家模式下都会出现图7 3所示应用程序路径对话框 单击下一步按钮 弹出图7 4所示的应用程序选项对话框 4 确定名称空间如果在应用程序选项对话框选择了独立的名称空间 将启用ActiveX支持选项 在加载VLX函数的同时自动加载ActiveX支持的函数 本例不打开独立的名称空间复选框 单击下一步按钮将弹出图7 5所示的 要包含的LISP文件 对话框 图7 4应用选项对话框 5 确定LISP文件的类型LISP文件可以是AutoLISP源代码文件 编译AutoLISP文件 FAS 或VisualLISP工程文件三种类型 通过图7 5所示的包含LISP文件对话框的下拉菜单确定LISP文件类型 图7 5包含LISP文件对话框 例如选择了LISP源文件类型 并且单击添加按钮 将弹出图7 6所示添加lisp源文件对话框 6 添加lisp源文件可以使用标准的Windows文件选取方法来选取多个文件 在图7 6所示对话框上选取gear lsp文件之后 单击打开按钮可以将该文件添加到应用程序中 见图7 7所示包含Lisp文件的对话框 如果想继续添加其他类型的文件 先从下拉列表处选择文件类型后再单击添加按钮 图7 6添加lisp源文件对话框 如果指定的是AutoLISP源文件 VisualLISP在打包成VLX文件前先编译成FAS类型的文件 如果指定的是FAS类型的文件 则直接将其打包 如果指定的是PRJ类型的工程文件 则工程文件中的所有文件将根据其具体类型先编译再打包或直接打包成VLX文件 如果要从应用程序中删除文件 只需选取这些文件后单击删除按钮即可 也可以在选取一个或多个文件后 单击鼠标右键并从快捷菜单中选择删除项 图7 7包含Lisp文件的对话框 多个应用程序文件的加载顺序和它们在该对话框列表中的顺序相同 如果在加载时调用某函数 则必须在调用该函数前定义它 在这种情况下 应该把定义该函数的文件放在调用该函数的文件之前 通过最前 向上 向下和最后按钮可用调整它们的顺序 由于将应用程序生成向导确定为专家模式 因此 单击下一步按钮 将弹出图7 8所示的要包含的资源文件对话框 图7 8包含资源文件对话框 7 添加资源文件添加资源文件和添加源文件的操作类似 首先确定要添加的资源文件的类型 本例选择DCL文件 然后单击添加按钮 通过随后弹出的将DCL文件添加到资源的对话框选取DCL文件即可 单击下一步按钮 将弹出图7 9所示的应用程序编译选项对话框 8 确定编译选项仅在专家模式下才出现图7 9所示确定编译选项如果选择了标准 此为标准模式 将生成最小的输出文件 它适合于只包括单个文件的程序 如果选择了优化并链接 此为优化和链接模式 可使生成的的编译文件效率更高 它适合于较大和较复杂的程序 图7 9确定编译选项对话框 本例选择两种模式均可 确定编译选项后 单击Next按钮将弹出图7 10所示的查看选项 编译应用程序对话框 9 创建应用程序这是应用程序生成向导的最后一步 单击上一步按钮 返回到上一步 查看上一步的选择 单击完成按钮 创建应用程序结束 图7 10查看选项 编译应用程序对话框 运行应用程序生成向导结束 在 d user2 路径下 生成了chilun prv chilun vlx和gear fas文件 其中chilun prv是包括VisualLISP创建应用程序所需的程序生成文件 gear vlx是打包的可执行文件 gear fas是编译gear lsp时生成的目标文件 加载gear vlx或gear fas 在命令提示下键入MGEAR即可调用该程序绘制齿轮 如果只有AutoLISP文件 源文件或目标文件 在创建应用程序时 第 2 步应选择简单模式 这样就可以省略第 4 7 和 8 步 7 3利用工程管理器管理和维护LISP文件AutoLISP应用程序通常都是由多个独立的LISP文件组成的 随着应用程序中文件数量的增加 对这些文件的管理和维护就变得很困难 在这种情况下 应该使用VisualLISP提供的最有效的工具 工程管理器 7 3 1工程管理器的功能工程管理器通过命名的工程对工程所包含的LISP文件进行管理和维护 一个工程在本质上就是一个LISP源文件表和一套如何编译这些文件的规则 工程管理器具有以下的功能 检查应用程序中哪些LISP源文件尚未被编译或者在上一次编译后又被修改过 并自动编译这样的一些文件 通过一个命名的工程的列表 可以很简单地查找并打开相关的文件 可以在一个工程的所有的文件中查找指定的源程序代码 可以通过直接链接多个源文件中的相同描述来优化编译结果 下面通过一个实例介绍利用工程管理器管理和维护多个LISP文件的有关操作 例7 1 定义以递规方式绘制旋转正六边形的命令 正六边形的旋转中心pc 最大边长lmax 最小边长lmin和旋转角alf是交互输入的参数 正六边形在旋转过程中 除了最外层的正六边形之外 每一个正六边形的顶点都在前一个正六边形的边上 当正六边形的边长缩短到近似最小边长lmin时 绘制结束 见图7 11 a 从图7 11 b 可以看出每个正六边形与旋转后的下一个正六边形的边长之间具有以下的关系 a b 图7 11以递归方式绘的制旋转正六边形 为了演示多文件的操作 将该程序分别存放于两个文件 文件file1 lsp存放该程序的主函数部分 主函数定义了名字为r hexagon的AutoCAD命令 文件file2 lsp定义了名字为hexagon的函数 函数hexagon被主函数调用 它们都存放在d盘的user1目录下 文件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 静默退出 文件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 绘制下一个正六边形 7 3 2创建一个工程1 创建一个工程文件选择菜单工程 新建工程 将弹出图7 12所示的新建工程对话框 此对话框用于确定新工程的路径和文件名 例如输入工程的名字为rh 存放在d盘的user2目录下 图7 12新工程对话框 2 向工程添加LISP源文件单击图7 12新工程对话框的保存按钮 将弹出图7 13所示的工程特性对话框 该对话框有工程文件和编译选项两个选项卡 工程文件选项卡用于向工程添加LISP源文件 图7 13工程特性对话框 通过按钮指定LISP源文件的路径 路径下方的列表显示了该路径下所有的LISP文件名 选取该列表的一个或多个文件 单击按钮 被选的文件就会转移到右边的列表内 右边的列表显示了该工程当前包含的所有LISP文件名 如果选取右边列表的一个文件 单击按钮 被选的文件就会从当前的工程中移回原处 按钮顶部 上移 下移和底部用于排列LISP文件在列表框中的顺序 该顺序即为加载这些文件的顺序 例如 在图7 13所示为工程文件选项卡上单击按钮 指定LISP源文件的路径为d盘的user1 路径下方的列表内显示了user1路径下的LISP文件名 选取该列表的文件file1和file2之后 单击按钮 文件file1和file2将移至右边的列表作为rh工程的成员 单击确定按钮 将弹出图7 14所示的工程窗口 名字为rh的工程创建完毕 同时在d盘的user2目录下得到了名字为rh prj的工程文件 7 3 3工程窗口工程窗口的标题显示了该工程的名字 列表框内显示了该工程包含的所有的LISP源文件的名字 双击列表框内的任意一个文件名 无论文件是否打开 即可激活包含该文件的文本编辑窗口 图7 14工程窗口 工程窗口的工具栏上有5个按钮 它们分别具有以下的功能 弹出图7 13所示的工程特性对话框 通过该对话框修改该工程的特性 加载工程中所有经过编译的 fas文件 如果某些LISP文件尚未被编译 则显示如图7 15所示的是否编译这些文件的询问信息 单击按钮是 则首先编译这些文件 然后将其加载 单击按钮否 则直接加载这些LISP源文件和已经存在的 fas文件 假定文件file1 lsp和file2 lsp尚未被编译 单击此按钮 在图7 17所示的询问框中单击按钮是 则首先编译这两个文件 然后加载刚生成的file1 fas和file2 fas 这时在AutoCAD的命令 提示下 键入r hexagon命令即可绘制旋转正六边形 图7 15询问对话框 加载工程中所有的LISP源文件 编译工程中所有的在上一次编译后被修改过的文件 生成新的 fas文件 重新编译工程中所有的LISP 无论这些文件是否已经被编译过 以上操作也可以通过工程的快捷菜单的相应选项完成 将鼠标移至工程窗口的列表框内 单击鼠标右键 将弹出图7 16所示的快捷菜单 其中各菜单项的功能见下一页 图7 16工程窗口的快捷菜单 7 3 4通过工程创建应用程序上一节介绍了用应用程序生成器创建应用程序的全过程 在第5步确定LISP文件的类型时 除了选择LISP源文件和编译过的LISP文件之外 还可以选择工程文件 通过指定的工程文件名 即可将该工程所包含的所有文件添加到应用程序中 例如 在图7 17所示的对话框的下拉列表选择 VisualLISP工程文件 单击 添加 按钮 通过随后弹出的 要添加的VisualLISP工程文件 对话框选择d盘的user2目录下的rh prj工程文件 然后单击 下一步 按钮 进行后续的操作 此时d盘的user1目录下的文件file1 lsp和file2 lsp被添加到当前的应用程序 图7 17添加了工程文件之后的 要包含的LISP文件 的对话框 单击 下一步 按纽 直至创建该应用程序结束 即可在 d user2 路径下 得到file1 fas file2 fas rh prv 和rh vlx文件 加载rh vlx或file1 fas和file2之后 在命令提示下键入r hexagon 即可绘制图7 11所示的旋转正六边形 7 3 5优化应用程序通过VisualLISP编译选项的优化功能可以得到运行效率更高的编译代码 单击图7 15所示的工程特性对话框的编译选项标签 即可显示图7 18所示的编译选项卡 该选项卡包含以下的一些工程编译选项 图7 18编译选项卡 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城市综合体特色小吃街租赁及经营管理合同
- 2025年智能金融风控AI助手系统定制开发合同
- 2025年度星级酒店客房环保装饰材料采购与施工一体化服务合同
- 公务员财务面试题及答案
- 高级中医儿科试题及答案
- 同码头场地租赁合同
- 农业机械作业服务合同协议书范本
- 二手车转让合同
- 2025细胞治疗临床试验与审批法规解读与实施报告
- 广东省广州市初三语文真题汇编《名句名篇默写》及答案
- 康复科护理金点子
- 工地油库安全管理办法
- 全球治理转型-洞察及研究
- 高等数学课程教学中遇到的问题及解决对策
- (高清版)DB32∕T 4001-2025 公共机构能耗定额及计算方法
- 电力物资打包方案(3篇)
- 2025至2030中国味精行业发展趋势分析与未来投资战略咨询研究报告
- 你的样子就是教育的样子-一位校长对教师行为规范的深度思考建议收藏
- 中医治疗泌尿系结石课件
- 屠宰场入股合同协议书
- 台球合同保密协议书
评论
0/150
提交评论