第三章 lisp 研究(自定义快捷健).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计开发自定义快捷键功能 ??? 假设我们要用VLISP开发一个基于AutoCAD的数据采集软件,软件提供的命令调用方式有:通过菜单调用、通过工具条调用、通过命令调用等。从使用者的角度讲,数据采集程序不同于一般的程序,不是运行一个命令就可以马上得到结果了,而需要频繁的手工操作来完成数据要素的绘制。这时,我们就不得不考虑如何减少作业人员手工操作的步骤。 比较一下上面提到的几种命令调用方式: 1.???????? 菜单调用方式,一般的菜单为分级菜单,作业员最少要点两次鼠标才能访问第一级菜单项,那么访问级数多的菜单就要点好几次鼠标了; 2.???????? 工具条调用方式,一般工具条按钮只要点击一次就可以执行相应的命令了,比较快捷,但工具条的设计相对麻烦一些,而且如果工具条过多的话,AutoCAD绘图窗口大小就要相应被压缩,这样不得于绘图者看图; 3.???????? 命令调用方式,要求用户在AutoCAD命令行输入一大串命令执行一个操作显然也是不合理的。 学过AutoCAD定制的朋友都会注意到,AutoCAD提供了一个.pgp文件,它允许用户定义快捷命令。 这里我们提供另外一种允许用户自定义快捷键的方法。 首先,到网站下载合适版本的DosLib工具,并在AutoCAD中加载doslib.arx应用程序; 然后,编写一个测试程序C:\Test.lsp,代码如下: (defun C:MyTest1 () (alert Test1)) (defun C:MyTest2 () (alert Test2)) (defun C:MyTest3 () (alert Test3)) 然后,再定义一个存储用户定义快捷键的配置文件C:\Test.ini [TITLE] 命令1=(C:MyTest1) 命令2=(C:MyTest2) 命令3=(C:MyTest3) [SHORTCUT_KEY] (C:MyTest1)=1 (C:MyTest2)=2 (C:MyTest3)=3 这里,调用三个函数的快捷键默认定义为1、2、3。在C:\Test.lsp中添加实现快捷键的代码: (defun ShortcutKey ( / ini keys key cmd str) (setq ini C:\\Test.ini) (setq keys (dos_getini SHORTCUT_KEY nil ini)) (foreach key keys (setq cmd (dos_getini SHORTCUT_KEY key ini)) (setq str (strcat (defun c: cmd () key ))) (eval (read str)) ;关键语句 );foreach ) (ShortcutKey) 现在重新加载Test.lsp程序,运行1、2、3命令,已经可以调用相应的命令了。那如何让用户能够自定义快捷键呢,其实道理很简单,只要为用户提供个对话框,能方便地更改配置文件C:\Test.ini中的[SHORTCUT_KEY]部分就可以了,代码如下: (defun Set_ShortcutKey ( / ini keys tmp x cmd ret it key) (setq ini C:\\Test.ini) (setq keys (dos_getini TITLE nil ini)) (setq tmp (mapcar (lambda (x) (setq cmd (dos_getini TITLE x ini) cmd (dos_getini SHORTCUT_KEY cmd ini)) (cons x cmd) ) keys)) (setq ret (dos_proplist 定义快捷键 快捷键列表 tmp)) ;修改INI设置 (foreach it ret (setq key (car it)) (setq cmd (dos_getini TITLE key ini)) (dos_setini SHORTCUT_KEY cmd (cdr it) ini) );foreach ;重新设置快捷键 (ShortcutKey) ) 在AutoCAD命令行运行(Set_ShortcutKey),结果如下图所示: ? 以上就是开发设计自定义快捷键功能的整个流程。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 文章來源:[教學]LISP快捷鍵-視窗工具 /forum-f7/topic-t384.htm 一

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档