tengte 发表于 2009-7-1 00:07:00

谢谢mccad!还想问一个问题:可以在CUI文件中直接加入相关的功能吗?

xhq1954425 发表于 2009-7-1 05:23:00

<p>下载学习!谢谢分享……</p>

mccad 发表于 2009-7-1 06:32:00

<p>可以在CUI中写入相关功能,但CUI复杂得多,暂时并不推荐那样做,费时啊。</p>

liminnet 发表于 2009-7-1 08:48:00

qjchen 发表于 2009-7-6 11:08:00

:), Lisp大概还是无法直接修改F1-F12的功能键的,当然,明总的菜单方法是个好方法。
假如是用LISP编供大家用的程序的时候,是个很好的方法的。
假如是自用的话,以下是一些以前写过的替代方法。不过主要介绍的是用AUTOHOTKEY的方法,见笑了,用的不是LISP的方法,可能有点走题。
---------------------------------------------------------
使用AUTOCAD的朋友都有这样的体会,图要画得快,得左手键盘右手鼠标的,这就使得要将命令尽可能地布置在左手键盘区。
重定义命令有几种方法
ACAD.PGP(优点,批量;缺点,不小心会改变别人的绘图习惯)
自定义LISP(优点,拷贝到U盘,绿色加载。缺点,无法定义功能键)
自定义ARX(优点,功能强大。缺点,与CAD版本相关,有一定编写难度)
autohook(优点,可定义F1等功能键,非常好用。缺点,与CAD版本相关,收费软件)
Hotkeys(由Chuck Gabriel编写,有VISUAL C++版和C#版,优点,可自由定义各功能键。但似乎还是和CAD版本有一定的相关性[没有仔细测试没有发言权],假如想获取C#版代码的话,可到http://www.theswamp.org/index.php?topic=10570.0处 )
其实,利用AUTOHOTKEY[http://www.autohotkey.com]的热键功能,可以实现AUTOHOOK的功能,还可以做的更好。
比如将以下代码存为a.ahk,下载一个autohotkey,安装之,运行a.ahk,即可
复制内容到剪贴板代码:
#IfWinActive AutoCAD
F1::send,'z{space}d{space}    ;;动态缩放
`::send,'_matchprop{space}    ;;按`键(ESC下面那个键)进行特性匹配 matchproperty
F4::send,'osmode{space}673{space}    ;;按F4实现END INT PER NEA四种捕捉的设置,请参看OSMODE变量,自己选择几种捕捉的数值进行加法操作)
tab::send,^l   ;;(按TAB实现正交操作的切换,如同F8)
!1::send,'3do    ;;(按ALT+1实现命令3dorbit,3维视图切换)
MButton::Send, 'pan{enter}   ;;屏蔽鼠标中键双击的图形最大化操作,有些朋友喜欢,有些不喜欢)
看着这段代码,您也可以直接编辑得更好的,是吧:)
---------------------------------------------------------
假如对AUTOHOTKEY 不算很熟悉的朋友,可以大概看看我写过的一点点入门教程
------------------
http://soft.deepin.org/read-htm-tid-721646.html
【教程】Autohotkey 的几个入门级应用
http://soft.deepin.org/read-htm-tid-987283.html
在Word 2003中的一元二次方程求解器
(这个是对世纪旗云结构分析软件计算书的一个简单入门探讨吧:)

mccad 发表于 2009-7-6 11:45:00

如果真的需要在程序中完成,则可以通过程序修改菜单,再加载,应该更是简单的。

qjchen 发表于 2009-7-6 12:02:00

<p>To mccad兄</p><p>应该是可行的,等下我也来学习试验一下。</p>

qjchen 发表于 2009-7-6 19:37:00

<p>在Mccad兄的提示下,经过研究,在</p><p><a href="http://www.mjtd.com/BBS/dispbbs.asp?boardid=3&amp;replyid=82428&amp;id=18715&amp;page=1&amp;skin=0&amp;landlord=0&amp;Star=2">http://www.mjtd.com/BBS/dispbbs.asp?boardid=3&amp;replyid=82428&amp;id=18715&amp;page=1&amp;skin=0&amp;landlord=0&amp;Star=2</a></p><p>的mccad兄和lazybone兄二位高手代码的基础上,改造得到了如下函数功能</p><p>动态生成菜单,将F1定义为类似F8的正交切换键等功能</p><p>;;用法:ldmu是加载菜单,uldmu是卸载菜单,加载本程序后,即可使用如下功能键<br/>;;快捷键的定义<br/>;;F1:定义为正交切换(如同F8功能,可惜不懂如何用F1模拟^L键,只好用LISP代替)<br/>;;F2-F5按照MCCAD兄的定义,没有修改<br/>;;ctrl+w:3dorbit命令<br/>;;ctrl+e:画椭圆的命令(这两个命令只是测试ctrl键的应用)</p><p>功能键部分定义尚粗糙,有待进一步改善</p><p>如:如何定义"TAB"键和"`"键,是否能够定义如"CTRL+1"之类的快捷键,都没有测试成功,也请高手指点</p><p>&nbsp;</p>

mccad 发表于 2009-7-6 21:14:00

<p>并不是怎么键都可以设置快捷健。</p><p>再改进一下,搞个界面出来,就完全可以代替其它外挂软件了。</p>

ketxu 发表于 2018-12-29 02:59:12

Nice idea ^^
页: 1 [2] 3
查看完整版本: [求助](已解决)可以将F1-F12功能键与LISP函数关联吗?或者直接改变功能键的默认功