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&replyid=82428&id=18715&page=1&skin=0&landlord=0&Star=2">http://www.mjtd.com/BBS/dispbbs.asp?boardid=3&replyid=82428&id=18715&page=1&skin=0&landlord=0&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> </p>
mccad
发表于 2009-7-6 21:14:00
<p>并不是怎么键都可以设置快捷健。</p><p>再改进一下,搞个界面出来,就完全可以代替其它外挂软件了。</p>
ketxu
发表于 2018-12-29 02:59:12
Nice idea ^^