- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)